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() メソッドを使用しようとしました = 同じ結果、常に false。要素に子要素があるかどうかを確認する方法は? 結果としてブール型が必要です。

4

2 に答える 2

0

1要素しかチェックできないと思います。

セレクターを使用している場合は、 this.getChildren(selector).length > 0 を実行するだけです

于 2013-05-31T10:52:03.247 に答える
0

これは機能しますが:

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

問題は、独自のイベントを持つ子 li を持つ一致する li に対して mouseenter を使用することです。したがって、子要素にマウスオーバーすると、親の mouseenter も起動するため、true と false が返されます。ルートelかどうかなど、追加のチェックを追加する必要があります。

要素が存在するかどうかを確認することは、単に要素を要求することです。一致が見つかった場合は、オブジェクトを返すか、それ以外の場合は null/未定義 (偽) を返します。

于 2013-05-31T13:26:58.373 に答える