2012-03-21 2 views
5

일부 요소를 제외해야하는 click 이벤트에 대한 수신기가 있습니다.Jquery closest()를 사용하여 여러 요소로 selector를 만들 수 있습니까?

지금 내 목록이 커지면서 선택자의 여러 요소를 "묶는"더 좋은 방법을 찾고 있습니다.

$(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 
}); 

이러한 요소를 제외하는 더 나은 방법이 있나요 :

이 내가 가진 무엇인가?

도움 주셔서 감사합니다.

+0

jquery가 작동하는 HTML을 업데이트 할 수 있습니까? –

+0

같은 클래스를 검사 할 각 요소를 제공 할 수는 없습니까? – Deadlykipper

+0

무슨 뜻인지 확실하지 않습니까? 나는 Jquery 1.7.1 (그리고 Jquery Mobile)을 사용하고있다. – frequent

답변

18

:

: 두 개 이상의 선택기를 지정하려면 쉼표를 사용할 수 있습니다
if($(event.target).closest('div:jqmData(panel="popover"), div.pop_menuBox, .toggle_popover, .ui-selectmenu').length > 0) { 
    return; 
} 
2

쉼표를 사용하십시오.

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

개 이상의 선택을 제공 할 수있는 JQuery와 문서에 따르면 가장 가까운에 대한 : http://api.jquery.com/closest/ 당신은 의미하는 CSS 선택기를 지정할 수 있습니다

+0

네, 이것 역시 읽었습니다. 이 서명 (jQuery 1.7에서만 사용 가능)은 더 이상 사용되지 않습니다.이 방법은 주로 내부적으로 또는 플러그인 작성자가 사용하기위한 것입니다. " Jquery 페이지의 의미는 무엇입니까? "서명"이란 무엇입니까? – frequent

+0

그 점을 지적 해 주셔서 감사합니다. 너에게 효과가 있니? 또한 jQuery가 예제의 배열에 셀렉터를 넣는 이유에 대해 궁금합니다. 'var close = $ ("li : first"). closest ([ "ul", "body"]);' –

+0

Ok. 방금 해봤 어. 쉼표로 정규 선택기를 사용하면 작동합니다. 나는 배열이 더 이상 지원되지 않는다고 가정한다. 나중에 테스트 할 것입니다. – frequent

관련 문제