使用 jQuery 我以编程方式生成一堆这样的div
's:
<div class="mydivclass" id="myid1">Some Text1</div>
<div class="mydivclass" id="myid2">Some Text2</div>
在我的代码中的其他地方,我需要检测这些 DIV 是否存在。div 的类名是相同的,但每个 div 的 ID 都不同。知道如何使用 jQuery 检测它们吗?
使用 jQuery 我以编程方式生成一堆这样的div
's:
<div class="mydivclass" id="myid1">Some Text1</div>
<div class="mydivclass" id="myid2">Some Text2</div>
在我的代码中的其他地方,我需要检测这些 DIV 是否存在。div 的类名是相同的,但每个 div 的 ID 都不同。知道如何使用 jQuery 检测它们吗?
您可以通过检查从 JQuery 返回的第一个对象来简化这一点,如下所示:
if ($(".mydivclass")[0]){
// Do something if class exists
} else {
// Do something if class does not exist
}
在这种情况下,如果第一个 ( [0]
) 索引处有一个真值,则假设存在类。
2013 年 4 月10 日编辑:我在这里创建了一个 jsperf 测试用例。
您可以使用size()
,但 jQuery 建议您使用 length 以避免另一个函数调用的开销:
$('div.mydivclass').length
所以:
// since length is zero, it evaluates to false
if ($('div.mydivclass').length) {
更新
所选答案使用了性能测试,但它略有缺陷,因为它还包括元素选择作为性能的一部分,这不是这里测试的内容。这是更新的性能测试:
http://jsperf.com/check-if-div-exists/3
我的第一次测试表明,属性检索比索引检索快,尽管 IMO 可以忽略不计。我仍然更喜欢使用长度,因为它对代码的意图更有意义,而不是更简洁的条件。
原生 JavaScript 总是会更快。在这种情况下:(示例)
if (document.querySelector('.mydivclass') !== null) {
// .. it exists
}
如果要检查父元素是否包含具有特定类的另一个元素,可以使用以下任一方法。(例子)
var parent = document.querySelector('.parent');
if (parent.querySelector('.child') !== null) {
// .. it exists as a child
}
或者,您可以.contains()
在父元素上使用该方法。(例子)
var parent = document.querySelector('.parent'),
child = document.querySelector('.child');
if (parent.contains(child)) {
// .. it exists as a child
}
..最后,如果您想检查给定元素是否仅包含某个类,请使用:
if (el.classList.contains(className)) {
// .. el contains the class
}
$('div').hasClass('mydivclass')// Returns true if the class exist.
这是不使用Jquery的解决方案
var hasClass = element.classList.contains('class name to search');
// hasClass is boolean
if(hasClass === true)
{
// Class exists
}
参考链接