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

时间:2014-06-06 06:09:54

标签: javascript jquery html css

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

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

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

有没有办法实现这个目标?除了制作新的开发/跨度来包装其他人,除了我不想选择的那个。(由于某种原因,这个解决方案需要很长时间。)

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

1 个答案:

答案 0 :(得分:1)

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

JSFiddle example

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

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

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

看到另一个visible example,一旦我给foo3一个新的背景颜色,所有内部的foos将具有相同的背景颜色。