2012-01-26 6 views
2

Я хочу выбрать #one, #two и братьев и сестер #two. Есть ли более элегантное решение, что у меня есть?Сочетание селекторов jQuery

 $('#one, #two').click(function(e){ 
     e.stopPropagation(); 
    }); 

    $('#two').siblings().click(function(e){ 
     e.stopPropagation(); 
    }); 

ответ

2

;

$("#one, #parentIdOfTwo > *").click(function(e) { 
    e.stopPropagation(); 
}); 

Лот быстрее, тоже.

+0

благодарственные! Это кажется очень элегантным и работает! –

+1

Обратите внимание, что это не эквивалентно коду OPs. Он также добавит обработчик событий ко всем потомкам '# parentIdOfTwo'. Лучше будет '#parentIdOfTwo> *'. –

+0

Вы абсолютно правы, мистер Клинг. Я обновил свой ответ соответственно. –

1

Попробуйте это. Взгляните, я использую andSelf, которые добавляют предыдущий набор элементов в стек к текущему набору, действительно полезный в вашем случае здесь.

$('#one').add($('#two').siblings().andSelf()).click(function(e){ 
     e.stopPropagation(); 
}); 
+0

как мое решение :) Я также подумал о функции 'andSelf', но без успеха –

+0

Heads up - в вашем примере кода есть небольшая опечатка: это должно быть' andSelf', а не 'addSelf'. –

+0

@MathiasBynens - Спасибо, что сообщила мне, прежде чем люди dv it: P – ShankarSangoli

0
$('#one, #two').add($('#two').siblings()).click(function(e){ 
     e.stopPropagation(); 
    }); 
0

Вы могли бы использовать:

$('#one, #two').add($('#two').siblings()).click(function(event) { 
    event.stopPropagation(); 
}); 

... или:

$('#one').add($('#two').parent().children()).click(function(event) { 
    event.stopPropagation(); 
});