带有jQuery选择器的变量赋值中的Javascript或运算符
鉴于这个简单的带有jQuery选择器的变量赋值中的Javascript或运算符,jquery,Jquery,鉴于这个简单的ul: <ul class="dummy"> <li>One</li> <li>Two</li> <li>Three</li> </ul> 根据我对在变量赋值中使用|的了解,我希望应该选择第一个li,因为没有li.active(另请参阅) 相反,在控制台.log中,我得到了未定义的而不是One:似乎从未计算容器.children('li:first child') 我错在哪
ul
:
<ul class="dummy">
<li>One</li>
<li>Two</li>
<li>Three</li>
</ul>
根据我对在变量赋值中使用|
的了解,我希望应该选择第一个li
,因为没有li.active
(另请参阅)
相反,在控制台.log中,我得到了未定义的而不是One
:似乎从未计算容器.children('li:first child')
我错在哪里?这是一个。。。非常感谢 As jQuery方法返回一个jQuery对象,该对象将始终是truthy;因此,您将得到未定义的。如果你只是想得到HTML,你可以使用
var active = container.children('li.active').html() || container.children('li:first-child').html();
无论您如何获取该元素,都要删除|
,并使用.length
属性检查元素是否存在
var active = container.children('li.active');
if(active.length == 0)
active = container.children('li:first-child')
var容器=$('.dummy');
var active=container.children('li.active').html()| | container.children('li:first child').html()
console.log(活动)代码>
- 一个
- 两个
- 三
以下值在JavaScript中被视为“false”
- 假的
- 空的
- “”(空字符串)
- 0
- 楠
- 未定义
|
操作符将处理这些情况。在您的例子中,container.children('li.active')
没有返回任何上述值,它是jquery选择器对象。因此,在这种情况下,第二个选项将不会执行
请安慰这句话,你会得到一些澄清console.log(container.children('li.active'))
有关AND或操作,请参见以下内容::尝试这样编写内联:(container.children('li.active')| | container.closest('li')?true:false)
container.children('li.active')
永远不会为空/未定义,因为它始终是一个JQuery对象,它是否有任何元素是不同的。PuZi是正确的,考虑使用。见更新
var active = container.children('li.active');
if(active.length == 0)
active = container.children('li:first-child')