使用jQuery,我以编程方式生成了一堆div,就像这样:
<div class="mydivclass" id="myid1">Some Text1</div>
<div class="mydivclass" id="myid2">Some Text2</div>
在代码的其他地方,我需要检测这些div是否存在。div的类名是相同的,但ID为每个div的变化。任何想法如何检测他们使用jQuery?
使用jQuery,我以编程方式生成了一堆div,就像这样:
<div class="mydivclass" id="myid1">Some Text1</div>
<div class="mydivclass" id="myid2">Some Text2</div>
在代码的其他地方,我需要检测这些div是否存在。div的类名是相同的,但ID为每个div的变化。任何想法如何检测他们使用jQuery?
当前回答
最好的方法是检查类的长度如下所示:
if ($('.myDivClass').length) {
其他回答
要显式地测试div元素:
如果($ (' div.mydivclass”)。长度){…}
没有jQuery:
原生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
}
你可以使用size(),但jQuery建议你使用length来避免另一个函数调用的开销:
$('div.mydivclass').length
So:
// since length is zero, it evaluates to false
if ($('div.mydivclass').length) {
http://api.jquery.com/size/
http://api.jquery.com/length/
更新
选择的答案使用性能测试,但它有轻微的缺陷,因为它也包括元素选择作为性能的一部分,这不是这里要测试的内容。这是一个更新的性能测试:
http://jsperf.com/check-if-div-exists/3
我的第一次测试运行表明,属性检索比索引检索快,尽管在我看来这几乎可以忽略不计。我仍然喜欢使用长度,因为对我来说,它更有意义的意图,而不是一个更简洁的条件。
简单代码如下:
if ($('.mydivclass').length > 0) {
//Things to do if class exist
}
使用特殊id隐藏div:
if ($('#'+given_id+'.mydivclass').length > 0) {
//Things to do if class exist
}
你可以通过检查JQuery返回的第一个对象来简化它:
if ($(".mydivclass")[0]){
// Do something if class exists
} else {
// Do something if class does not exist
}
在这种情况下,如果第一个([0])索引处有一个真值,则假设类存在。
编辑04/10/2013:我在这里创建了一个jsperf测试用例。