使用 jQuery 我编程生成一堆div
是这样的:
<div cl="mydivcl" id="myid1">Some Text1</div>
<div cl="mydivcl" id="myid2">Some Text2</div>
在我的代码中的其他地方,我需要检测这些 DIV 是否存在。div 的类名是相同的,但每个 div 的 ID 更改。任何想法如何使用 jQuery 检测它们?
您可以通过检查从 jQuery 返回的第一个对象来简化这一点:
if ($(".mydivcl")[0]){
// Do something if cl exists
} else {
// Do something if cl does not exist
}
在这种情况下,如果在第一个([0]
)索引处存在 truthy 值,则假定存在类。
编辑 04 / 10 / 2013:我已经创建了一个 jsperf 测试用例here。
您可以使用size()
,但 jQuery 建议您使用长度来避免另一个函数调用的开销:
$('div.mydivcl').length
因此:
// since length is zero, it evaluates to false
if ($('div.mydivcl').length) {
http://api.jquery.com/size/
http://api.jquery.com/length/
UPDATE
所选答案使用 perf 测试,但它略有缺陷,因为它还包括元素选择作为 perf 的一部分,这不是这里正在测试的内容。
http://jsperf.com/check-if-div-exists/3我的第一次测试表明,属性检索比索引检索更快,尽管 IMO 它是相当微不足道的。我仍然更喜欢使用长度,因为它对代码的意图更有意义,而不是更简洁的条件。
没有 jQuery:
原生 JavaScript 总是会更快。在这种情况下:(example)
if (doent.querySelector('.mydivcl') !== null) {
// .. it exists
}
如果要检查父元素是否包含具有特定类的另一个元素,则可以使用以下任何一种。(example)
var parent = doent.querySelector('.parent');
if (parent.querySelector('.child') !== null) {
// .. it exists as a child
}
或者,您可以在父元素上使用.contains()
方法。(example)
var parent = doent.querySelector('.parent'),
child = doent.querySelector('.child');
if (parent.contains(child)) {
// .. it exists as a child
}
..最后,如果要检查给定元素是否仅包含某个类,请使用:
if (el.clList.contains(clName)) {
// .. el contains the cl
}
$('div').hasCl('mydivcl')// Returns true if the cl exist.
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(24条)