繁体   English   中英

选择除一个及其子/孙之外的所有元素

[英]Selecting all elements except one and its children/grandchildren

我正在寻找一种方法来选择除一个元素及其后代之外的所有元素,这些元素可能有子/孙子甚至更多。 我真正想做的是......

$("*").not(".foo, .foo *").bind("touchmove",function(e){
    e.preventDefault();
});

除了foo类及其子类之外,这将禁用所有touchmove事件。 但不幸的是,我不知道它会有多少代,因为我要编写的代码将被用于很多模板文件中,因此它们可能根本就没有孩子,或者他们可能拥有10代家庭。

有没有办法实现这个? 除了制作新的dev / span以包装其他所有人,而不是我不想选择的那个。(这个解决方案需要很长时间才能出于某种原因。)

任何建议或建议将不胜感激。

您的代码完全符合您的要求:

JSFiddle示例

你试过吗? 我用悬停来做一个小例子让它可见+我只选择了div和p来使它更容易,但它也适用于所有元素。

$("div,p").not(".foo, .foo *").hover(function(){
    $(this).css("background", "#70A5C9");
},function(){
    $(this).css("background", "#ffffff");
});

它的工作原理是因为每个后代都继承了他祖先的类。 在我的例子中,你可以看到最深的div将拥有所有的fooX类(1 <X <6)。

看另一个可见的例子 ,一旦我给foo3一个新的背景颜色,所有内部foos将具有相同的背景颜色。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM