0

友達、

すべてのインスタンスを手動で初期化する代わりに:

$("#MyChildId1").find("ul.sf-menu").superfish({ delay: 100, speed: 'fast' });
$("#MyChildId2").find("ul.sf-menu").superfish({ delay: 100, speed: 'fast' });
$("#MyChildId3").find("ul.sf-menu").superfish({ delay: 100, speed: 'fast' });

jQuery プラグイン (Superfish) の複数の (そして動的な) インスタンスを使用し、イベント委任を使用して親で 1 回の呼び出しでそれらを初期化したいと思います。

$("#MyParentId").find("ul.sf-menu").superfish({ delay: 100, speed: 'fast' });

しかし、これは機能しません。ドキュメントでは、現在はイベント委任を使用していると言われています: http://users.tpg.com.au/j_birch/plugins/superfish/

最後の箇条書き項目: 「•パフォーマンスと柔軟性を向上させるために、v1.5.1 の時点でイベント委任を使用します。」

jQuery の天才は何が起きているか知っていますか?

4

1 に答える 1

0

すべてのメニューを選択し、それらをループして開始することができます。

$("#MyParentId").find("ul.sf-menu").each(function () {
    $(this).superfish({ delay: 100, speed: 'fast' });
});

ドキュメント.each(): http://api.jquery.com/each

以下を使用することもできます。

例えば:

var $menus = $("#MyParentId").find("ul.sf-menu");
for (var i = 0, l = $menus.length; i < l; i++) {
    $menus.eq(i).superfish({ delay: 100, speed: 'fast' });
}

ループは jQueryループforよりもわずかに速く実行されます。主に、ループが反復ごとに IIFE を作成するためだと思います (例: )。.each().each()for (...) { (function () {...})(); }

于 2013-09-27T00:23:37.130 に答える