jQuery - a:not()中的多个选择器?

Cha*_*her 46 jquery jquery-selectors

我似乎无法得到以下工作:

$('input:not([type=radio][type=checkbox])').live('click', function() {
    alert("You haven't clicked a radio or checkbox!");
});
Run Code Online (Sandbox Code Playgroud)

尝试了一些不同的语法,任何人都可以帮我解决这个问题.

干杯
查理

Fré*_*idi 81

您将多选择器多属性选择器混淆.你应该写:

$("input:not([type=radio], [type=checkbox])");
Run Code Online (Sandbox Code Playgroud)

多个属性选择器[type=radio][type=checkbox],其中的元素相匹配type的属性是等于两个 radio checkbox,不能在这个宇宙中发生.


小智 5

里面的语法not()与普通选择器语法相同,因此,如果要匹配不属于这两个对象的内容,则可以使用不匹配两者的选择器(因为实际上是要否定选择器)。你是怎样做的?用相同的方式在CSS中将样式一次应用于多个选择器的方式,如下所示:

$('input:not([type=radio],[type=checkbox])')
Run Code Online (Sandbox Code Playgroud)

那应该选择所有输入[type=radio]不是[type=checkbox]

  • 注意,这仅适用于jQuery的`:not()`。CSS3的`:not()`除了[简单选择器](http://www.w3.org/TR/css3-selectors/#simple-selectors-dfn)之外,什么都不能接受。这样,如果您在jQuery中将除简单选择器之外的任何内容传递给`:not()`,现代浏览器将无法使用`querySelectorAll()`来解析选择器,因此可能会对性能产生影响(如果是微观的)。 (3认同)