2012-12-22 28 views
9

Tôi gắn một hàm click đến một liên kết:jQuery selector cho liên kết mà không có một hình ảnh bên trong

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

Bây giờ tôi đang tìm kiếm một selector sẽ chỉ phù hợp nếu liên kết không chứa thẻ hình ảnh. Vì vậy, tương tự như a:not(img) nhưng img là phần tử con.

Tôi có thể làm như thế nào?

Trả lời

11

Hãy thử điều này:

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

Tôi sẽ cụ thể hơn bằng cách cung cấp một bộ chọn trước khi gọi ': has', vì vậy': has' không cố gắng khớp mọi phần tử trong trang 'a: not (a: has (img))' nên cung cấp hiệu suất tốt hơn. –

+0

@ FabrícioMatté cảm ơn bạn đã đề xuất – Eli

1

Bạn có thể sử dụng not với has để lọc neo không có img

Live Demo

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

+0

Bạn vừa quên 'a' lần này nhưng +1 cho câu trả lời đầu tiên bao gồm' có'. –

+0

Cảm ơn @ FabrícioMatté Tôi không thể giúp bạn quên một? – Adil

+0

thiếu 'a' trước': không': '$ (" nội dung "). (" Nhấp "," a: không (a: has (img)) "', nếu không bạn sẽ ủy nhiệm trình xử lý cho tất cả các yếu tố không liên kết với hình ảnh thay vì chỉ các liên kết không có hình ảnh: http://jsfiddle.net/kuWk6/2/. ': P' –

1

Hãy thử điều này

$('a:not(:has(>img))').click(function(){ 
    alert('click'); 
})​; 
Các vấn đề liên quan