Mootools:如何检查子元素?

时间:2013-05-31 10:49:20

标签: mootools

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

2 个答案:

答案 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)。