HTML:
<ul id="mainmenu">
<li class="mainmenu-item">Menu 1
<ul class="mainmenu-child">
<li>Menu1</li>
<li>Menu2</li>
<li>Menu3</li>
</ul>
</li>
</ul>
JS:
$$('#mainmenu li').addEvents({
'mouseenter':function() {
alert(this.contains($$('.mainmenu-child')));
}
});
总是假的。
试图使用hasChild()方法=相同的结果,总是假的。
如何检查是否有孩子的元素?结果需要布尔类型。
答案 0 :(得分:0)
我认为你只能检查1个元素。
如果您正在使用选择器,请执行此操作.getChildren(selector).length&gt; 0
答案 1 :(得分:0)
这将有效但是
$$('#mainmenu li').addEvents({
'mouseenter': function() {
var hasChild = !!this.getElement('ul.mainmenu-child'); // falsy/truthy.
console.log(hasChild);
}
});
问题是,你在匹配的li上使用mouseenter,它也有自己的事件的子li。因此,如果您将鼠标悬停在子元素上,则父项上的mouseenter也将触发,因此您将获得true和false。你需要添加额外的支票,如果它是根本等等。
检查元素是否存在只是请求元素 - 如果找到匹配,它将返回一个对象,否则返回null / undefined(falsy)。