使用 jQuery 确定 div 中的 children 是否有 css class

using jQuery to determine if children of a div have a css class

在我的一个网页上,我目前正在检查 css class 是否 正在使用,如下所示:

if (!$('*').hasClass("my-special-class")) {

上面的方法有效,但它正在检查页面上的每个元素。事实上,我只需要检查特定的 div (id = 'mydiv') 及其 child 元素,但不太确定要使用哪种选择器,欢迎建议?

使用

$('#myID').find(".my-special-class").length

它将 return 0,如果在该父 div 中没有带有 class 的元素。

if ( $('#yourIDorClass').children().length > 0 ) {
     // do something
}

这应该有效。 children() 函数 returns 包含 children 的 JQuery object。所以你只需要检查大小,看看它是否至少有一个 child.

您需要做的就是使用选择器本身在 if 语句

中进行比较
if($('.my-special-class').length > 0){
    //element with this class exists - do something
}

这将在 DOM 中搜索具有 class my-special-class 的任何元素。如果找不到该元素,则长度返回为 0

或者,如果您想在某个元素中找到它,您可以修改选择器 -

if($('#myDiv .my-special-class').length > 0){
    //element exists in #myDiv - do something
}

此选择器的工作方式与任何 CSS 选择器的工作方式相同,myDiv 的任何带有 class my-special-class 的子项都将被选择

你必须这样使用

$('#mydiv *').hasClass("my-special-class")

如果 mydiv 的任何子元素正在使用 class,它将 return 为真,如果不使用,则为假。

它检查 HTML 页面上所有内容的原因 class 是因为您在 jQuery 选择器中使用了 '*'

如果您想使用 jQuery 定位特定的 div,只需将您的代码更改为:

if (!$('#myDiv').hasClass("my-special-class")) {
  ...
}
$('#myDiv .my-special-class').length

应该做的工作:-)