Vejam como está funcionando:
Em código:
if ($.browser.msie && $.browser.version < 7) return; $('#navigation li') .removeClass('highlight') .find('a') .append('<span class="hover" />').each(function () { var $span = $('span.hover', this).attr('style', $("span.hover").parent().attr("style")); var $span = $('> span.hover', this).css('opacity', 0); $(this).hover(function () { $span.stop().fadeTo(500, 1); }, function () { $span.stop().fadeTo(500, 0); }); }); });</script>
O HTML normal:
<ul id="navigation"> <li class="highlight"> <a href="#" class="triplov" style="background-image:url(images/1.jpg);"><h2>Item #1</h2></a> </li> <li class="highlight"> <a href="#" class="unico" style="background-image:url(images/2.jpg);"><h2>Item #2</h2></a> </li> <li class="highlight"> <a href="#" class="unico" style="background-image:url(images/3.jpg);"><h2>Item #3</h2></a> </li> </ul>
Como deveria ficar:
<ul id="navigation"> <li class=""> <a href="#" class="triplov" style="background-image:url(images/1.jpg);"><h2>Item #1</h2> <span class="hover" style="background-image: url(images/1.jpg); opacity: 1;"/></a> //aqui está o :hover e fade acontecendo </li> <li class=""> <a href="#" class="unico" style="background-image:url(images/2.jpg);"><h2>Item #2</h2> <span class="hover" style="background-image: url(images/2.jpg); opacity: 0;"/></a> </li> <li class=""> <a href="#" class="unico" style="background-image:url(images/3.jpg);"><h2>Item #3</h2> <span class="hover" style="background-image: url(images/3.jpg); opacity: 0;"/></a> </li></ul>
Mas ele retorna assim:
<ul id="navigation"> <li class=""> <a href="#" class="triplov" style="background-image:url(images/1.jpg);"><h2>Item #1</h2> <span class="hover" style="background-image: url(images/1.jpg); opacity: 1;"/></a> </li> <li class=""> <a href="#" class="unico" style="background-image:url(images/2.jpg);"><h2>Item #2</h2> <span class="hover" style="background-image: url(images/1.jpg); opacity: 0;"/></a> </li> <li class=""> <a href="#" class="unico" style="background-image:url(images/3.jpg);"><h2>Item #3</h2> <span class="hover" style="background-image: url(images/1.jpg); opacity: 0;"/></a> </li></ul>
Ele só pega o background-image do 1º <a> e não dos seguintes! Procurando sobre a função .each() eu acabei encontrando o seguinte:
Alguma idéia ou solução?Each getter only returns the value of the first element of the collection.
Edição feita por: Sprite, 19/08/2009, 15:03.