2012-12-22 5 views
9

mi legano una funzione click ad un collegamento:selettore jQuery per collegamento senza un'immagine all'interno

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

ora sono alla ricerca di un selettore che corrisponderà solo se il collegamento non contiene un tag di immagine. Così simile a a:not(img) ma img è l'elemento figlio.

Come posso farlo?

risposta

11

Prova questo:

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

Sarei più specifico fornendo un selettore prima di chiamare ': has', quindi': has' non prova ad abbinare ogni elemento della pagina . 'a: not (a: has (img))' dovrebbe fornire prestazioni migliori –

+0

@ FabrícioMatté grazie per il tuo suggerimento – Eli

1

È possibile utilizzare not con has per filtrare le ancore non avere img

Live Demo

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

+0

Hai appena dimenticato il 'a' questa volta, ma +1 per la prima risposta incluso' ha'. –

+0

Grazie @ FabrícioMatté Non potrei farti dimenticare un? – Adil

+0

manca 'a' prima di': not': '$ (" body "). On (" click "," a: not (a: has (img)) "', altrimenti si delegherebbe il gestore a tutti elementi che non sono link con immagini invece di link che non hanno immagini: http://jsfiddle.net/kuWk6/2/. ': P' –

1

Prova questo

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