2012-03-21 9 views
5

Tengo un detector para eventos de clic de los cuales necesito excluir algunos elementos.¿Puedo crear un selector con múltiples elementos usando Jquery más cercano()

En este momento mi lista está creciendo, entonces estoy buscando una mejor manera de "agrupar" múltiples elementos en un selector.

Esto es lo que tengo:

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

¿Hay una mejor manera de excluir estos elementos?

¡Gracias por la ayuda!

+0

¿Puedes actualizar el código HTML en el que jquery está trabajando? –

+0

¿No puedes simplemente darle a cada elemento que quieres que revise la misma clase? – Deadlykipper

+0

no estoy seguro de lo que quieres decir? Estoy usando Jquery 1.7.1 (y Jquery Mobile) – frequent

Respuesta

18

Puede especificar los selectores CSS, lo que significa: se puede usar la coma para especificar dos o más selectores:

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

Use una coma.

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

De acuerdo con la documentación de jQuery se puede proporcionar más de un selector para más cercano: http://api.jquery.com/closest/

+0

sí, también leo esto. No estaba seguro de qué "esta firma (¡solo!) Está obsoleta a partir de jQuery 1.7. Este método está destinado principalmente a ser utilizado internamente o por autores de complementos". en la página de Jquery se supone que significa? ¿Qué es "firma"? – frequent

+0

Gracias por señalar eso. ¿Funciona para ti? También tengo curiosidad sobre por qué jQuery pone sus selectores en una matriz en el ejemplo: 'var close = $ (" li: first "). Closest ([" ul "," body "]);' –

+0

Ok. Solo lo probé. Si hago un selector regular con coma, funciona. Supongo que la matriz ya no es compatible. Lo probaré más tarde – frequent

Cuestiones relacionadas