javascript - 如何使用 jquery get select 元素具有 MULTIPLE 模式和反向

标签 javascript jquery html select

我今天的工作堆积如山。 我的堆栈在这里:

我有一个 select html 元素,它有 MULTIPLE 模式:

<select class="test" MULTIPLE></select>

(MULTIPLE 模式也输入为:multiple="multiple"我包括在这里)

<select class="test" multiple='multiple'></select>

现在我只想在许多普通选择元素中选择这个元素:

<select class="test" ></select>
<select class="test" ></select>
<select class="test" multiple='multiple'></select>
<select class="test"> </select>

我是这样使用 jQ 的:

$(".test[!MULTIPLE]").css('border','solid 1px red');

但是所有选择的元素都有红色边框;

我怎样才能只选择多个元素。并选择非多重模式?

最佳答案

试试这个:

$(".test:not([multiple])").css('border','solid 1px red');

编辑:正如 Reigel 提到的,如果避免使用 jQuery 伪选择器,您可以获得相同的结果集并获得更好的性能:

$(".test").not([multiple]).css('border','solid 1px red');

编辑 2:从评论中可以看出,一些快速测试表明,至少对于我们中的一些人来说,第二个选项实际上更慢。进一步挖掘,根据 css3.info ,对 :not CSS3 选择器的原生支持比我想象的更广泛。假设 jQuery 在可用时使用 native 选择器,这可能会造成所有差异(对不起 IE7)。

编辑 3:进一步感谢@nickf,他在 IE8 中运行了这些测试,发现两者之间没有实质性区别。鉴于所有这些歧义,明智的做法是在目标浏览器中测试 jQuery 伪选择器或 :not/.not 特别是是否陷入代码热点对性能有重大影响的地方(如果你有一个受控的目标浏览器环境)。

但如果您的目标是所有浏览器,那么最好的建议似乎是使用最适合您的代码的内容,并避免过早优化。

关于javascript - 如何使用 jquery get select 元素具有 MULTIPLE 模式和反向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3011784/

相关文章:

javascript - 关闭后刷新 Bootstrap 模态

javascript - Angularjs - 中止/取消运行 $http 调用

javascript - 如何判断插入键是否被按住

javascript - AJAX 无法加载资源 : the server responded with a status of 403 (Forbidden)

javascript - 如何使 Bootstrap 模式背景获得模糊效果

javascript - 如何记录立即调用 + 匿名函数?

javascript - Facebook 找到了修复移动滚动的方法

javascript - 有两个 "competing"jquery mobile slider ,如果其中一个发生更改,另一个的值设置为 0

html - CSS - 使容器大小适合内容,移除未使用的空间

html - 如何增加dt标签之间的间距