2011-09-14 42 views
5

Super-technical drawingjQuery: Bấm vào * chỉ * yếu tố này

Trong bản vẽ cao nghệ thuật trên, hình vuông màu xanh lá cây là một đứa trẻ của một màu hồng. Một màu hồng được bao quanh bởi màu xanh lá cây bởi chức năng của tôi, vì vậy hình vuông màu xanh lá cây có thể là bất cứ thứ gì - siêu liên kết, hình ảnh, nút, v.v.

Tôi muốn chụp một nhấp chuột vào div màu hồng CHỈ nếu nó không phải là ' t nhấp vào phần tử màu xanh lá cây.

Điều này có thể được thực hiện bằng cách lật Boolean bằng mouseenter trên hình vuông màu xanh lục, nhưng điều đó có vẻ là một cách lộn xộn để làm điều đó với tôi.

Bất kỳ manh mối nào?

QUAN TRỌNG QUAN TRỌNG: Tôi không thể gây rối với hình vuông màu xanh lá cây, vì vậy không thêm bất kỳ thứ gì vào sự kiện nhấp chuột.

+3

Tôi khó chịu nhất mà SO sẽ không cho phép tôi tạo thẻ mới 'hình ảnh thú vị' = [ –

+0

làm chủ đề này: http://stackoverflow.com/questions/ 6635659/jquery-bind-click-bất cứ điều gì-nhưng-yếu tố là về cùng một vấn đề như của bạn? – JMax

+0

Tương tự, nhưng không hoàn toàn. –

Trả lời

8

Bạn có thể làm điều này:

$('.pink-box-selector').click(function(e) { 
    if ($(e.target).is('.pink-box-selector')) { 
     // do stuff here 
    } 
}); 
+0

Cũng giống như một lưu ý phụ, một trong những ưu điểm của giải pháp này là bạn không phải sửa đổi mã dựa trên yếu tố nào bạn quấn (vì bạn đã nói rằng phần tử được bao bọc có thể thay đổi). Về cơ bản nó là danh sách trắng, so với danh sách đen. – jmar777

+0

Hoàn hảo. Chúc mừng. Giải pháp –

1

Trợ giúp $("#div_id :not('#excluded_element')).click(); có giúp được không? http://api.jquery.com/not-selector/

+1

Công cụ chọn này sẽ không chọn gì. Nó sẽ tìm thứ gì đó * bên trong * của '# div_id' mà * không phải là * phần tử duy nhất thực sự ở trong đó. – jmar777

+0

@ jmar777 Rất được quan sát. –

0

Thiết lập một event listener nhấp chuột riêng cho các yếu tố "xanh" và có nó event.preventDefault()

5

Hai tùy chọn. Trước tiên, bạn có thể kiểm tra xem mục tiêu có phải là div màu xanh lục hay không.

$('#pinkdiv').click(function(e) { 
    if ($(e.target).is('#greendiv')) return; 
    // handle the event 
}); 

Hoặc bạn có thể viết trình xử lý nhấp chuột cho div màu hồng bình thường và ngừng nhấp chuột vào div màu xanh lá cây để nhân giống.

$('#greendiv').click(function(e) { 
    e.stopPropagation(); 
}); 
+0

@ jmar777 cho tùy chọn kiểm tra đầu tiên nếu mục tiêu là div màu hồng có thể có ý nghĩa hơn. –

+0

Điều này cũng tốt, mặc dù :). – jmar777

Các vấn đề liên quan