如何测试元素是否具有特定类



我有以下函数,它按照刷新数据

refresh: function($contentholder) {
$contentholder.each(function() {
$this = $(this);
if ($this.hasClass("Codes")) {
//then it does some stuff in here
}
}
}

$contentholder的数据如下

<div class="Codes" cod="t592">
<h3></h3>
<div class="Items">
<div class="ItemCodes" id="592" time="2016/04/30 12:15" places="1"></div>
</div>
</div>

检测到if语句的唯一方法是按照$this.hasClass("Codes")检查它,但我只希望在hasClass("codes")包含类ItemCodes的情况下执行if语句

这是我尝试过但不起作用的

if ($this.hasClass("Codes").length > 0) //comes back undefined even though there is data
if ($this.hasClass("ItemCodes"))` //doesnt get detected

基本上,我想做一些类似的事情

if ($this.hasClass("Codes").find("ItemCodes"))

我该如何做到这一点?

您可以使用find()来确定是否有任何子.ItemCodes元素。您需要两个单独的条件,因为这些语句不能组合在一起。

refresh: function ($contentholder) {
$contentholder.each(function () {
$this = $(this);
if ($this.hasClass("Codes") && $this.find('.ItemCodes').length) {
// do some stuff in here
}
}
}

您可以将.is()方法与:has()伪选择器结合使用,如下所示:

if ( $this.is('.Codes:has(".ItemCodes")') ) {
//
}

let $that = $('div.Codes');
console.log( $that.is('.Codes:has(".ItemCodes")') );
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="Codes test me" cod="t592">
<h3></h3>
<div class="Items">
<div class="ItemCodes" id="592" time="2016/04/30 12:15" places="1"></div>
</div>
</div>

最新更新