0

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() 方法=相同的结果,总是错误的。如何检查元素是否有子元素?结果需要布尔类型。

4

2 回答 2

0

这将起作用但是:

$$('#mainmenu li').addEvents({
    'mouseenter': function() {
        var hasChild = !!this.getElement('ul.mainmenu-child'); // falsy/truthy.
        console.log(hasChild);
    }
});

问题是,您在匹配的 li 上使用 mouseenter,该 li 也有具有自己事件的子 li。所以如果你将鼠标悬停在一个子元素上,父元素上的 mouseenter 也会触发,所以你会得到一个 true 和一个 false。如果它是根 el 或不是等,您需要添加额外的检查。

检查元素是否存在只是简单地请求元素 - 如果找到匹配项,它将返回一个对象或 null/undefined 否则(虚假)。

于 2013-05-31T13:26:58.373 回答
0

我认为您只能检查 1 个元素。

如果您使用选择器,只需执行此操作即可。getChildren(selector).length > 0

于 2013-05-31T10:52:03.247 回答