2011-06-28 36 views
5

Nếu bạn đặt một .click() trên phần tử div và bạn có phần tử đầu vào trong div .. làm cách nào bạn có thể bỏ qua .click() nếu người dùng nhấp vào đầu vào?nhấp - chỉ trên "trực tiếp" onclicks

Các div.click() chỉ có để kích hoạt khi nhấp chuột sử dụng bên trong div, nhưng ngoài yếu tố đầu vào

<div style="width:400px; height:200px"> 
<input type="text" style="width:50px" /> 
</div> 

Trả lời

7

Bạn có hai lựa chọn:

Đính kèm một handler click sự kiện vào yếu tố đầu vào và ngăn chặn các sự kiện từ bọt lên bằng cách gọi event.stopPropagation()[docs]:

$('input').click(function(event) { 
    event.stopPropagation(); 
}); 

HOẶC

Kiểm tra event.target[docs] trong bộ xử lý sự kiện click được đính kèm với div cho dù mục tiêu có phải là thành phần input hay không. Một cái gì đó như:

if(event.target.nodeName !== 'INPUT') { 
    // do something 
} 
+0

không bao giờ biết về 'event.stopPropagation(); 'Rất đẹp, 1 = P –

0

bạn có thể sử dụng này:

if(event.toElement != this) 
    return; 
Các vấn đề liên quan