2009-03-17 19 views
0

Ich habe dieses jQuery-Code, der eine "em" Tag up gleiten, auf schweben, und unten auf Blur:jQuery animieren Problem

$(".entries a").hover(
    function() { 
    $(this).find("em").animate({ height:"100%"}, 500) 

    }, 
    function() { 
    $(this).find("em").animate({ height:"0%"}, 500) 
    } 
); 

HTML-Code

<div class="entries"> 
<a href="http://www.website.com"> 
<em>Description</em> 
<img src="thumb.jpg"/> 
</a> 
<a href="http://www.website.com"> 
<em>Description</em> 
<img src="thumb.jpg"/> 
</a> 
<a href="http://www.website.com"> 
<em>Description</em> 
<img src="thumb.jpg"/> 
</a> 
</div> 

Wenn ich meine Maus außerhalb bewegen das a-tag, das em-tag springt ein paar pixel runter und beginnt dann zu rutschen. Dies erzeugt eine Art Verzögerungseffekt.

Gibt es einen besseren Weg, dies zu schreiben?

Wie ein var mit dem $ (this) .find ("em") cachen?

Irgendwelche Tipps für die Leistung und Code-Stil wäre sehr geschätzt.

Antwort

1

versuchen dies mit, ich denke, es ist die Wirkung, die Sie gehen, und es verwendet weichere Übergänge.

$(".entries a").hover(
    function() { 
    $(this).find("em").slideDown(500); 
    }, 
    function() { 
    $(this).find("em").slideUp(500); 
    } 
); 

bearbeiten:
wenn man etwas wirklich effizient wollen, können Sie jQuery für die Auswahl zu vermeiden und nur $(this.childNodes[1]) es auszuwählen verwenden.
[1] ist, weil Leerzeichen ist Element 0

+0

Danke, funktioniert besser. Wie kann ich $ (this) .find ("em") in einer Variablen zwischenspeichern und im Code verwenden? –

+0

Weißt du, wie viel schneller es ist? Kann ich wirklich einen Unterschied bemerken? Tut mir leid, das nochmal zu fragen, aber ich würde gerne wissen, wie ich das $ (this) .find ("em") in einem var zwischenspeichern und im Code verwenden kann? –

+0

Es gibt nicht wirklich eine einfache Möglichkeit, es zu cachen, die ich sehen kann, weil Sie eine einzelne Funktion auf mehrere Elemente anwenden, Sie würden ein Array benötigen, das einen Index für jedes Element und dann zurück auf Platz eins behalten würde – cobbal

0

Keine direkte Antwort auf Ihr spezifisches Problem, aber ich empfehle Ihnen, in die JQuery UI zu schauen. Es hat ähnliche Animationseffekte wie hier.