我有这段代码:
if ($('.workflow-item:eq(0)').has(".tube-wrapper")) {
itemresT = 0;
console.log('0 has tube')
} else if ($('.workflow-item').eq(1).has(".tube-wrapper")) {
itemResT = 1;
console.log('1 has tube')
} else if ($('.workflow-item').eq(2).has(".tube-wrapper")) {
itemResT = 2;
console.log('2 has tube')
} else if ($('.workflow-item').eq(3).has(".tube-wrapper")) {
itemResT = 3;
console.log('3 has tube')
} else {}
这很容易,如果它们包含元素.workflow-item
,它会检查四个.tube-wrapper
。
在我的情况下,.workflow-item
数字3包含.tube-wrapper
,因此它应该返回'2 has tube'。但是,它每次都会返回'0 has tube'。即使我将.tube-wrapper
放入.workflow-item number 4
。
答案 0 :(得分:4)
如果条件总是为真,那么 has()
会返回jQuery对象,因为定义的变量被接受为真值,所以它总是为真。您可以使用 length
属性或 size()
方法。
if($('.workflow-item').eq(1).has(".tube-wrapper").length)
<小时/> 或者,您可以将
is()
与 :has()
选择一起使用
if($('.workflow-item').eq(1).is(':has(.tube-wrapper)'))
答案 1 :(得分:1)
您还可以使用.hasClass()来获取布尔值
https://api.jquery.com/hasclass/
if($('.workflow-item').eq(1).hasClass(".tube-wrapper"))