2012-12-22 3 views
9

binde ich eine click-Funktion auf einen Link:jQuery-Selektor für Verbindung ohne ein Bild innerhalb

$("body").on("click", "a", function() { 
    //do something 
}); 

Jetzt habe ich für einen Wähler bin auf der Suche, die nur übereinstimmen, wenn die Verbindung nicht ein Image-Tag enthält. So ähnlich wie a:not(img) aber img ist das Kind-Element.

Wie kann ich das tun?

Antwort

11

Versuchen Sie dies mit:

$("body").on("click", "a:not(a:has(img))", function() { 
    //do whatever you want here 
}); 
+2

Ich würde genauer sein, indem ich einen Selektor vor dem Aufruf von ': has' zur Verfügung stelle, also': has' versucht nicht jedes Element auf der Seite zu finden . 'a: nicht (a: hat (img))' sollte eine bessere Leistung bieten. –

+0

@ FabrícioMatté vielen Dank für Ihren Vorschlag – Eli

1

können Sie not mit has verwenden Anker zum Filtern nicht img

Live Demo

$("body").on("click", "a:not(a:has(img))", function() { 
    //do something 
    alert(""); 
}); 

+0

Sie haben nur das 'a' dieses Mal vergessen, aber +1 für die erste Antwort einschließlich' hat'. –

+0

Danke @ FabrícioMatté Ich konnte dich nicht vergessen vergessen? – Adil

+0

fehlt 'a' vor dem': not': '$ (" body "). On (" klick "," a: nicht (a: has (img)) "', sonst würden Sie den Handler an alle delegieren Elemente, die keine Links zu Bildern sind, anstatt nur Links, die keine Bilder haben: http://jsfiddle.net/kuWk6/2/. ': P' –

1

Versuchen Sie diese

$('a:not(:has(>img))').click(function(){ 
    alert('click'); 
})​; 
Verwandte Themen