2011-01-12 12 views
4

Ich versuche, das Anker-Tag auszuwählen und ein Zielattribut hinzuzufügen. Wenn es in ein Bild mit der Klassengröße-Miniatur eingepackt ist. Wer weiß, warum das nicht funktioniert?jQuery wähle Eltern a eines Bildes

<a href="example"><img class="size-thumbnail" src="example"></a> 

jquery

$('.size-thumbnail:parent').attr('target','_blank'); 
+1

Ich glaube, dass der Selektor ': parent' in diesem Fall Ihnen alle' .size-thumbnail' gibt, die untergeordnete Elemente haben. Da Bilder keine Kinder haben können, würde dies niemals funktionieren. –

Antwort

5

Try this:

$('a').has('img.size-thumbnail').attr('target','_blank'); 

oder

$('a.has(img.size-thumbnail)').attr('target','_blank'); 
2

die .parent() Verwenden Sie den Dom Baum zu durchqueren bis

Beispiel:

var Link = $("img.size-thumbnail").parent(); 

Und dann die Methoden anwenden wie attr auf den Link Variable wie so:

var Link = $("img.size-thumbnail").parent(); 
Link.attr("target","_blank"); 
0

Das ist nicht, wie die :parent Werke ist.

Die :parent bedeutet wählen Elemente, die Eltern auf andere Elemente sind ..

Sie

brauchen
$('.size-thumbnail').parent().attr('target','_blank'); 
3

Sie haben die Bedeutung von :parent nach hinten - es Elemente auswählt, die Eltern, nicht die Eltern von das ausgewählte Element. Versuchen Sie stattdessen:

$('.size-thumbnail').parent().attr('target','_blank'); 
1

Alle hier Antworten scheinen in Ordnung, aber man kann es in umgekehrter Richtung tun:

$('a:has(.size-thumbnail)').attr("target","_blank"); 

Sie tun können, dass da verschachtelte Anker-Tags nicht gültig sind;) so ist das Bild immer ein Kind in einem Anker und nicht in mehreren Ankern.

+1

Leistung sollte nicht wichtig sein, es sei denn, es gibt eine sehr große Anzahl solcher Bilder, aber '.parent()' ist eigentlich ein bisschen schneller als ': hat'. jQuery optimiert '.parent()' unter Verwendung der Eigenschaft DOM '.parentNode' (eine statische Suche), während': has' Unterabfragen erfordert. –

+0

+1 für einen alternativen Ansatz, obwohl! :-) –

+0

Danke und editiert das. –