2012-08-12 60 views
11

我想要做的是选择文档上的所有输入按钮,除了那些位于特定ID下的按钮。如何选择除特定ID以外的所有输入?

实施例:

<body> 
<input type="button"> 

<div id="something"> 
    <input type="button"> 
</div> 
<div id="something2"> 
    <input type="button"> 
</div> 


<input type="button"> 
<input type="button"> 
<input type="button"> 
</body> 

例如,我想选择所有的输入,除了那些位于下<div>id是“东西”。

我已经试过:

1) $('input[type="button"]:not(:parent(#something))').addCSS(); 

2) $('input[type="button"] :not(#something input[type="button"])') 

与其他类似的方法

+0

[JQuery Selector for not“wrapped”elements]的可能的重复(http://stackoverflow.com/questions/11924672/jquery-selector-for-not-wrapped-elements) – Blazemonger 2013-02-27 21:12:36

回答

18

你可以做这样的(相对有效)。

$("input[type=button]").filter(function() { 
    return $(this).closest("#something").length == 0; 
}); 

首先,你的所有input[type=button]元素,然后删除那些#something作为父母。

另一种可能性是:

$("input[type=button]").not("#something input[type=button]") 

你不得不来测试,看看哪个更有效,但无论是将工作。

工作两者的演示:http://jsfiddle.net/jfriend00/fjxDb/

1

也许这个作品:$(":not(#something) input[type=button]")

+1

我想知道效率这是因为文档中的几乎每个对象(除了一个)都会匹配':not(#something)'。 – jfriend00 2012-08-12 23:39:45

+1

@ jfriend00而且它也行不通http://jsfiddle.net/Zt4Qd/ – undefined 2012-08-12 23:44:29

+0

只要给它一个随机镜头......也许你会有一些运气。下次,如果它已经很容易重建,我建议你自己尝试一下。 – Kiruse 2012-08-12 23:46:17

6

你几乎那里,你需要做的一切是你之前删除的空间:没有。

$('input[type="button"]:not(#something input[type="button"])') 

我知道这是一个老问题,但它首先在谷歌显示出来,并使用jQuery的。不()作为公认的答案表示并不总是一个选项。

+0

总是欢迎改进! :D – 2016-04-28 11:41:13

+0

为什么jQuery的'.not()'有时不是一个选项?这是一个jQuery问题,所以你总是可以在'jQuery中使用'.not()',对吧? – jfriend00 2016-09-02 05:27:17

+0

当你想动态地处理事件时,也可以在**应用它之后添加**的元素,通常使用$(document).on('theEvent','theSelector')。在那里,不可能将选择器与.not()结合使用,而可以使用:不在选择器中。 – 2016-09-03 06:07:41

相关问题