【发布时间】:2016-05-21 14:55:37
【问题描述】:
我想确定点击的“li”下方是否有/包含“ul”。
<ul id="menu">
<li>Item One</li>
<li>Item Two
<ul>
<li>Sub One</li>
<li>Sub Two B</li>
</ul>
</li>
<li>Item Three</li>
</ul>
我的许多尝试总是返回 true,因为我的方法似乎考虑到了所有内容,包括“this”:
$('ul#menu li').click(function() {
if ($(this).has('ul')) {
...do something...;
}
return false;
});
或者
$('ul#menu li').click(function() {
if ($(this).find('ul')) {
...do something...;
}
return false;
});
或者再试一次:
$('ul#menu li').click(function() {
if ($(this).filter(function( index ) {
return $( "ul", this ).length >= 1;
}) ) {
...do something...
}
return false;
});
我最终将它拼凑在一起,这很有效,但并不优雅:
$('ul#menu li').click(function() {
var offspring = $(this).children().toArray();
if (offspring.length == 3) { //ul in object adds 2 to length
...do something...
}
return false;
});
这似乎很简单,但我一定错过了一些基本的东西。
想法?
【问题讨论】:
-
也许给有孩子的 li 添加一个父类?这可能会更容易
标签: jquery descendant