带有所选元素的子级的 JQuery 选择器 not()

Posted

技术标签:

【中文标题】带有所选元素的子级的 JQuery 选择器 not()【英文标题】:JQuery selector not() with children of selected elements 【发布时间】:2013-09-02 16:44:00 【问题描述】:

基本上添加了一些滑块功能,并且想将滑块扔到错误CSS类下以在某些情况下突出显示。

我正在编程工具提示以在句柄上方滑动,当添加错误样式时,我想将它扔到除这些句柄之外的所有元素上。句柄被封装在它们自己的<div class="tooltip"> 标签中,然而,当我调用选择器调用var div = $(this).find('div:not([class=.tooltip])'); 时,当我随后调用div.addClass("ui-state-error "); 时,这个封装的 div 类的子元素的样式会更新。

TL;DR:有没有办法调用not() 选择器,从而排除一个元素及其所有子元素。我知道显式列出子元素是一种快速的解决方法,但是 JQuery 库中是否有任何东西可以适应这种情况?

请注意,我有意避免使用 ID 标记,因为此控件最终会成为 ASP 用户控件,并且我想避免以后出现冲突的 ID 标记。

【问题讨论】:

【参考方案1】:

试试这个:

$(this).find('div:not(.tooltip, .tooltip *)');

【讨论】:

这行得通。谢谢。我没有意识到选择器可以具有一些类似正则表达式的属性。检查了this,选择器似乎比我最初想象的更通用。然而,我记得读过的一件事是将事物封装在属性标签中是一种很好的做法。一点点阅读,我想出了替代方案div:not([class^=tooltip]) 我不确定是否封装在属性标签中。自己看,类选择器更快:jsperf.com/attr-vs-class32

以上是关于带有所选元素的子级的 JQuery 选择器 not()的主要内容,如果未能解决你的问题,请参考以下文章

jQuery - 严格的子级层次选择

如何使用not选择器定位ID中的元素?

如何使用带有行子级的 jQuery 数据表构建表

jQuery筛选

jqery知识汇总

CSS 可以检测元素的子元素数量吗?