2009-07-17 15 views
1

Richtig, sagen wir, ich habe diese wiederholten divs.jQuery Div Elternteil und Kind

<div class="upcoming"> 
<div class="roll" style="display:none">Hidden</div> 
</div> 
<div class="upcoming"> 
<div class="roll" style="display:none">Hidden</div> 
</div> 
<div class="upcoming"> 
<div class="roll" style="display:none">Hidden</div> 
</div> 

Dies ist falsch, aber wie betreibe ich dies mit jQuery die „Rolle“ Klasse innerhalb gehalten zu offenbaren, wenn sie über eine dieser divs schwebte.

<script type="text/javascript"> 
$(document).ready(function() { 
    $(".upcoming").hover(function() { 
     $(this + ".roll").fadeIn("Fast"); 
    }, function() { 
     $(this + ".roll).fadeOut("Fast"); 
    }); 
}); 
</script> 

Irgendwelche Ideen? :)

+0

Wissen Sie nicht wirklich jquery aber wie wäre es mit $ (this). $ ('. Roll'). FadeIn (...) – Greg

Antwort

5

Verwenden Sie die jQuery(expression, context) Form:

$('.roll', this) 
+0

Ausgezeichnet! Ich benutzte dies für das Durchlaufen aller divs auf meiner Seite, die untergeordnete Elemente in ihnen hatten und musste den Wert mehrerer untergeordneter Elemente innerhalb jedes div finden/drucken. – PreethaA

2
$(function() { 
    $("div.upcoming").hover(function() { 
    $("div.roll", this).fadeIn("fast"); 
    }, function() { 
    $("div.roll", this).fadeOut("fast"); 
    }); 
}); 

Nur ein allgemeiner Tipp: wo immer möglich, sowohl mit jQuery und CSS in Ihre Selektoren spezifisch sein. Versuchen Sie Klassenselektoren ohne Tag als letztes Mittel zu verwenden.

  • Best: #ID
  • Gut: Tag oder tag.class
  • Worst: .class-

Warum? Nun, ein Selektor wie ".upcoming" muss grundsätzlich den gesamten Baum oder Teilbaum durchlaufen. Das sind DOM-Methoden, um die anderen beiden zu beschleunigen (getElementById bzw. getElementsByName). Dies kann die Seitenladezeiten erheblich beeinflussen.

-1

In diesem speziellen Fall

 
$(this).next() 

würden Sie auch einen Verweis auf das Kind vom Klebeband div geben.

Verwandte Themen