Jump to content


Sprite

Member Since 14/08/2009
Offline Last Active 13/07/2010, 20:49
-----

Posts I've Made

In Topic: .each() No Jquery Guarda Apenas O 1º Elemento

16/08/2009, 11:25

Olá, consegui resolver o problema da seguinte forma: criando outro <span> dentro do <span> que controla a opacidade e carregando o atributo style dentro desta tag, assim:

[codebox]$(function () {
if ($.browser.msie && $.browser.version < 7) return;
$('#navigation li')
.removeClass('highlight')
.find('a')
.append('<span class="hover" />').each(function () {
var $src = $(this).attr("style");
var $work = $('> span.hover', this).attr('style', $src);
var $span = $('> span.hover', this).css('opacity', 0);
$(this).hover(function () {
$span.stop().fadeTo(500, 0.8);
}, function () {
$span.stop().fadeTo(500, 0);
});
});
});[/codebox]

No fim das contas eu estava sendo redundante mas isso foi bom para que eu aprendesse um pouco de jQuery que eu não sabia nada. O motivo de precisar de um estilo inline no <a> era porque as background-images seriam definidas num sistema em PHP. Porém seria mais conveniente que eu jogasse as classes e os backgrounds num arquivo CSS gerado pelo próprio sistema, já que estes destaques seriam definidos apenas uma vez por semana! :lol:
Não sei mais o que otimizar pois o efeito trabalha apenas com o background-position então não é um efeito de :hover comum. Claro que com o javascript desabilitado funcionaria um :hover padrão nos limites do navegador..

IPB Skin By Virteq