Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择其子元素在jQuery中不包含特定元素的元素_Javascript_Jquery - Fatal编程技术网

Javascript 选择其子元素在jQuery中不包含特定元素的元素

Javascript 选择其子元素在jQuery中不包含特定元素的元素,javascript,jquery,Javascript,Jquery,我想选择页面上的所有div,这些div的子元素不包含具有特定类的元素 我可以选择其子体包含具有以下内容的类的元素: $('div').has('.myClass'); 所以我只想要这个的倒数 我会使用。过滤器: $('div').has(':not(.myClass)'); var theDivs = $('div').filter(function() { return $(this).find('.myclass').length === 0; }); 一个简单的$div:not:h

我想选择页面上的所有div,这些div的子元素不包含具有特定类的元素

我可以选择其子体包含具有以下内容的类的元素:

$('div').has('.myClass'); 所以我只想要这个的倒数

我会使用。过滤器:

$('div').has(':not(.myClass)');
var theDivs = $('div').filter(function() {
  return $(this).find('.myclass').length === 0;
});
一个简单的$div:not:has.myClass将完成这项工作

它在jQuery内部是如何工作的

1$div-从文档中获取所有div

2:not:has.myClass-这是两条语句,一条嵌套在另一条中。现在jQuery在上述步骤中的结果div上执行:has.myClass,并获取类名为“myClass”的所有div


3:否-此伪选择器方法将应用于步骤1中的所有div,用于查找不带“.myClass”的div的第二条语句所产生的div。这可以通过循环第1步中的所有div并比较第2步中的div来实现。

这并不是问题的真正目的。我认为这会选择任何具有非myClass类的元素,即,如果一个元素有两个类,其中一个是myClass,它仍然会匹配,因为它有一个类不是我的类。似乎对我来说很好。Pointy的代码也可以工作。等等——这将为您提供所有元素,这些元素包含任何没有myClass的后代,对吗?尽管根据jquery文档,这是我所期望的。在JSFIDLE上进行测试时,它似乎只检查直接子级。奇怪的您的代码检查所有子体。我想这取决于@pelms想要什么?那里的示例将找到该类的所有元素。如果您想查找至少有一个子元素的所有元素,那么您的示例将不起作用。@Pointy。你在想什么?有课吗。has适用于meIt will,has将匹配具有与选择器匹配的子体的任何元素。是的,对不起,@pelms,@InfernalBadger-你说得对。一定需要更多的咖啡。这个很好用,谢谢。我希望有一个简单的格式可以使用'not',但我猜不是:,你可以试试$'div:not*>:has.myClass',这是荷马最初的帖子。似乎与JSFIDLE中的Pointy的工作原理相同。@InfernalBadger你能帮我理解它的作用吗?这是如何限定元素的?这不是意味着任何元素的子元素吗?不确定,只是尝试了荷马的第一篇文章,它似乎很有效。是的,你发布的早期版本很有效。这个没有。我在jQuery1.8上。
$('div:not(:has(*>.myClass))');