2012-03-21 28 views
5

Tôi có trình nghe cho các sự kiện nhấp mà tôi cần loại trừ một số thành phần không.Tôi có thể tạo bộ chọn có nhiều phần tử bằng cách sử dụng Jquery gần nhất()

Hiện tại danh sách của tôi đang phát triển, vì vậy, tôi đang tìm cách tốt hơn để "nhóm" nhiều yếu tố trong bộ chọn.

Đây là những gì tôi có:

$(document).on('click tap', function(event) {    
    if ($(event.target).closest('div:jqmData(panel="popover")').length > 0 || 
     $(event.target).closest('div.pop_menuBox').length > 0 || 
     $(event.target).closest('.toggle_popover').length > 0) || 
     $(event.target).closest('.ui-selectmenu').length > 0 { 
      return; 
    } 
    // do stuff 
}); 

Có cách nào tốt hơn để loại trừ những yếu tố này?

Cảm ơn bạn đã trợ giúp!

+0

bạn có thể cập nhật HTML mà jquery đang hoạt động không? –

+0

Bạn không thể chỉ cho mỗi phần tử bạn muốn kiểm tra cùng một lớp? – Deadlykipper

+0

không chắc chắn ý bạn là gì? Tôi đang sử dụng Jquery 1.7.1 (và Jquery Mobile) – frequent

Trả lời

18

Bạn có thể chỉ định selectors CSS, có nghĩa là: bạn có thể sử dụng dấu phẩy để xác định hai hoặc nhiều selectors:

if($(event.target).closest('div:jqmData(panel="popover"), div.pop_menuBox, .toggle_popover, .ui-selectmenu').length > 0) { 
    return; 
} 
2

Sử dụng dấu phẩy.

if ($(event.target) 
    .closest('div:jqmData(panel="popover"), div.pop_menuBox, .toggle_popover, .ui-selectmenu').length > 0) { 
    return; 
} 
0

Theo tài liệu jquery bạn có thể cung cấp nhiều hơn một selector cho gần nhất: http://api.jquery.com/closest/

+0

có, tôi cũng đọc nó. Tôi là một chút không chắc chắn những gì "Chữ ký này (chỉ!) Không được chấp nhận như của jQuery 1.7. Phương pháp này chủ yếu có nghĩa là để được sử dụng trong nội bộ hoặc bởi tác giả plugin." trên trang Jquery được cho là có ý nghĩa gì? Chữ ký là gì? – frequent

+0

Cảm ơn bạn đã chỉ ra điều đó. Nó làm việc cho bạn? Tôi cũng tò mò là tại sao jQuery đặt bộ chọn của nó vào một mảng trong ví dụ: 'var close = $ (" li: first "). Gần nhất ([" ul "," body "]);' –

+0

Ok. Chỉ cần thử nó. Nếu tôi làm một bộ chọn thông thường với dấu phẩy nó hoạt động. Tôi cho rằng điều mảng không còn được hỗ trợ nữa. Sẽ kiểm tra sau này – frequent

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