.has()函数在if语句中不起作用(jQuery)

时间:2016-04-26 09:02:29

标签: javascript jquery if-statement

我有这段代码:

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

2 个答案:

答案 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"))