我尝试使用列表和子列表并通过jQuery访问项目。
目标是检查每个列表项并检查它是否有子列表!
但使用" .next(" ul")"总是返回true。
我期望达到如下结果:FALSE(第1项不具有UL作为下一个元素),TRUE(第2项具有UL作为下一个元素),FALSE(第3项不具有UL作为下一个元素)和TRUE(第4项) item将UL作为下一个元素。)
我做错了什么?
感谢。
以下是FIDDLE:https://jsfiddle.net/rw1rvamo/1/
<ul>
<li>
<div class="container">
<span class="icon">.</span>
<span class="text"> Item</span>
<span class="arrow"></span>
</div><!-- container -->
</li>
<li>
<div class="container">
<span class="icon">.</span>
<span class="text"> Item</span>
<span class="arrow"></span>
</div><!-- container -->
<ul>
<li>sub item 1</li>
<li>sub item 2</li>
<li>sub item 3</li>
<li>sub item 4</li>
</ul>
</li>
</ul>
脚本:
$( ".container" ).each(function() {
if($(".container").next().is('ul')) {
var oi = $(".container").next();
alert("TRUE");
}
else {
alert("FALSE");
}
});
答案 0 :(得分:0)
您需要使用$(this)
代替$(".container")
$(".container").each(function() {
var $cont = $(this)
if ($cont.next().is('ul')) {
var oi = $cont.next();
alert("TRUE");
} else {
alert("FALSE");
}
});
请注意,在循环中使用alert()
是一种可怕的测试/调试方法。请改用console.log()
使用length
$(".container").each(function() {
var $ul = $(this).next('ul');
if ($ul.length) {
//do something with $ul
alert("TRUE");
} else {
alert("FALSE");
}
});