2012-01-26 73 views
2

我想选择#one,#two和#two的兄弟。我有什么更优雅的解决方案吗?结合jquery选择器

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

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

回答

2

multiple selector exists;

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

也快得多。

+0

感谢您!这看起来非常优雅,而且很有用! –

+1

请注意,这不等同于OP代码。它还会将事件处理程序添加到'#parentIdOfTwo'的所有后代。更好的是'#parentIdOfTwo> *'。 –

+0

你是绝对正确的,克林先生。我相应地更新了我的答案。 –

1

试试这个。看看我正在使用andSelf,它将堆栈中的前一组元素添加到当前集合,这对您的情况非常有帮助。

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

喜欢我的解决方案:)我也想过'andSelf'功能,但没有成功 –

+0

单挑 - 代码示例中有一个小错字:它应该是'andSelf',而不是'addSelf'。 –

+0

@MathiasBynens - 感谢您在使用dv之前告诉我: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(); 
});