Javascript 在HTML元素中循环,不处理返回的prevObject
我似乎无法理解这一点,这有点尴尬 我试图循环几个元素组,然后在这些元素中,我需要能够检查其中是否有其他元素(ul-li-ul) 我将在其中获得三个控制台日志,如果我要注销$(this).find('ul li ul')-我将获得一个prevObject,其中我不知道循环的第二次迭代是什么 任何帮助都将是惊人的 多谢各位 jQuery的Javascript 在HTML元素中循环,不处理返回的prevObject,javascript,jquery,html,loops,Javascript,Jquery,Html,Loops,我似乎无法理解这一点,这有点尴尬 我试图循环几个元素组,然后在这些元素中,我需要能够检查其中是否有其他元素(ul-li-ul) 我将在其中获得三个控制台日志,如果我要注销$(this).find('ul li ul')-我将获得一个prevObject,其中我不知道循环的第二次迭代是什么 任何帮助都将是惊人的 多谢各位 jQuery的.has()返回一个不是布尔值的元素子集,您只需更改以下内容: if ($(this).has('ul li ul')) 到 工作 大于>0是可选的,但为了可读
.has()
返回一个不是布尔值的元素子集,您只需更改以下内容:
if ($(this).has('ul li ul'))
到
工作
大于>0是可选的,但为了可读性,我把它放在了那里。
为每个列表获取控制台的原因是,无论是否找到某个对象,$(selector).has()方法都会返回一个对象。您正在条件化IF(任何内容),这将被视为有效,因为没有显示结果的对象仍然是一段数据(例如,在您的情况下是prevObject)。添加长度后,如果没有结果,它将返回0,并且在JavaScript中将0视为false
这应该对你有用,希望你也能明白为什么会这样:)
是一个jQuery对象,所以您在浏览器控制台中看到的输出似乎就是该对象
如果需要实际DOM元素的数组,而不是包含它们的jQuery对象,可以使用.get()函数
@斯科特康奈尔很乐意帮忙!我已经更新了我的答案,以便您理解为什么会发生这种情况:)
$('#hamburger-nav ul div.cell_3').each(function(index) {
if ($(this).has('ul li ul')) {
console.log('found one');
}
});
if ($(this).has('ul li ul'))
if ($(this).has('ul li ul').length)
$('#hamburger-nav ul div.cell_3').each(function(index) {
if ($(this).has('ul li ul').length > 0) {
console.log('found one');
console.log($(this).has('ul li ul'))
}
});
$(this).find('ul li ul')
var elementArray = $(this).find('ul li ul').get();