2012-03-21 15 views
5

Mam detektor zdarzeń kliknięcia, z którego muszę wykluczyć niektóre elementy.Czy mogę utworzyć selektor z wieloma elementami przy użyciu najbliższego Jquery()

Obecnie moja lista rośnie, więc szukam lepszego sposobu na "pakowanie" wielu elementów w selektor.

To jest to, co mam:

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

Czy istnieje lepszy sposób, aby wykluczyć te elementy?

Dzięki za pomoc!

+0

Czy możesz zaktualizować HTML, na którym działa jquery? –

+0

Nie możesz po prostu podać każdego elementu, który chcesz sprawdzić w tej samej klasie? – Deadlykipper

+0

nie wiesz co masz na myśli? Używam Jquery 1.7.1 (i Jquery Mobile) – frequent

Odpowiedz

18

Można określić selektorów CSS, co oznacza: można użyć przecinka określić dwa lub więcej selektorów:

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

Użyj przecinka.

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

Zgodnie z dokumentacją jQuery można dostarczyć więcej niż jeden przełącznik do najbliżej: http://api.jquery.com/closest/

+0

tak, też to czytam. Nie byłem pewien, co to jest "Ta sygnatura (tylko!) Jest przestarzała od wersji jQuery 1.7. Ta metoda jest przeznaczona przede wszystkim do użytku wewnętrznego lub autorów wtyczek". na stronie Jquery ma znaczyć? Co to jest "podpis"? – frequent

+0

Dzięki za wskazanie tego. Czy Ci to pasuje? Jestem również ciekawy, dlaczego jQuery umieszcza jego selektory w tablicy w przykładzie: 'var close = $ (" li: first ") .blist ([" ul "," body "]);' –

+0

Ok. Wypróbowałem to. Jeśli robię zwykły selektor z przecinkiem, działa. Zakładam, że element tablicy nie jest już obsługiwany. Przetestuję to później – frequent