2 に答える 2

1

いくつかの終了タグがありませんでした。

更新された fiddleを参照してください。

$(".menu li").on('click', function(e) {
    e.stopPropagation();
    $(this).children('ul').slideToggle();
});

このon()方法を使用すると、機能をより詳細に制御できます。必要なのはstopPropagation()メソッドです。これにより、クリックイベントが dom ツリーをliスライドトグルする親にバブルアップするのを防ぎます。

liまた、クリックした子のみをフィルタリングするulことで、トグルしたいものをより明確にします。

于 2013-03-13T10:15:43.217 に答える
0

.on()イベント委譲を使用した Flauwekeul のものの代替バージョン:

$('.menu').on('click', 'li', function(event){
    if (event.target != this) {
     return;//dont want bubbled up events
    }
    $(event.target).children('ul').slideToggle();
});

http://jsfiddle.net/fzy48/5/で参照してください。

イベント委任を使用する利点は、要素ごとに 1 つのイベント ハンドラーではなく、1 つのイベント ハンドラー (親.menu要素内)をアタッチするだけであることliです。

于 2013-03-13T10:25:12.747 に答える