3

私は次のものを持っています:

$('#menu a[href^="/C"], #menu a[href^="/Test"], #menu a[href^="/T"]')
        .live('click', function (event) {
.....
.....
        });

各メニュー アドレス リンクを確認し、それぞれに関数を追加します。ただし、..... でマークされた関数は約 20 行の長さで、最大 100 のアドレス リンクがあります。

このようにコーディングすると、20 行すべてが 100 リンクのそれぞれに追加されることになりますか? 名前付き関数を使用するようにこれを変更する必要がありますか、それともシステム生成名で作成された無名関数であり、すべてのリンクに対して内部的に保存されていませんか?

4

1 に答える 1

4

イベント委任を使用しているため、イベントはにのみバインドされますdocument。つまり、いいえ、これらの20行は1か所にのみバインドされています。

delegateメソッドまたはメソッドのonいずれかを使用してください.live。新しいバージョンのjQueryでは減価償却され、非効率的です。

$("#menu").delegate('a[href^="/C"], a[href^="/Test"], a[href^="/T"]','click',function(){...});

また

$("#menu").on('click','a[href^="/C"], a[href^="/Test"], a[href^="/T"]',function(){...});

非常に古いバージョンのjQueryを使用していて、を使用する必要がある場合.liveは、代わりにこの構文を試してください。ユースケースにとっては少し効率的ですが、$(document).ready()内にある必要があります。

$('a[href^="/C"], a[href^="/Test"], a[href^="/T"]','#menu').live('click',function(){...});
于 2012-05-23T15:09:46.197 に答える