3

だから私はこれに対する答えを見つけようとしていますが、正しい選択をするのに役立つ決定的なものはないようです。

ですから、私が興味を持っているのは$.delegate()、最近私はそれを使うのが好きで、今日のほとんどのアプリでもう少し安定しているようです。それで。私は通常それを使用すると次のようなことをします

$('div').delegate('.someclass', 'click', function(e){ .... });

今まではそれでいいです。複数のイベントを処理する必要がある要素がある場合。だから私は最善のアプローチは何だろうかと思っていますか?私はの範囲で何かをしますか。

$('div').delegate('.someclass', 'click', function(e){ .... });
$('div').delegate('.someclass', 'mouseover', function(e){ .... });
$('div').delegate('.someclass', 'mouseout', function(e){ .... });

または私は$.bind()ルートに行きますか?そして次のようなことをします

$('.someclass').bind({
    click:function(){...},
    mouseout:function(){...},
    mouseover:function(){...}
});

$.delegate()似たようなものをサポートしています$.bind()か?APIを読んでいるようには見えませんが、わかりません(私には機能しません)。それとも、私が気付いていないかもしれない2つの組み合わせに本質的に似ている機能はありますか?

4

7 に答える 7

9

.delegatejQuery ver 1.7の時点で置き換え.bindられましたon.()

$('div').on({
    click:function(){...},
    mouseout:function(){...},
    mouseover:function(){...}
},'.someclass');

$('div').on( 'click mouseover mouseout','.someclass', function(e){ .... });

このアプローチは、イベントを委任する場合に使用できます。

于 2012-12-05T21:30:55.480 に答える
0

新しいイベント管理関数on()とoff()を使い始めたばかりの場合は、おそらく最善でしょう。これらを使用すると、凝縮された構文を使用して、委任されたイベントと標準のイベントの両方を使用できます。

$("a").on({
    click: function() {},
    mouseover: {}
});  // ordinary event handlers

$("div").on({
    click: function() {},
    keydown: function() {}
}, "a.cls");  // delegated
于 2012-12-05T21:42:58.117 に答える
0

あなたが提案したメソッドは、jQuery ver 1.7 で非推奨になりました。
イベント ハンドラーをアタッチするために必要なすべての機能を提供するため、代わりに .on() メソッドを使用してください。
.on() でバインドされたイベントを削除するには、.off() を使用します
または、一度だけ呼び出されるイベントが必要な場合は、.one()を使用します。

于 2012-12-05T21:43:23.273 に答える
0

私の推測では、これらのイベントはすべて互いに異なっているのでしょうか? その場合、少なくとも jquery 1.7 に更新すると、メソッド.onでイベント マップを使用できます。

$('div').on({
    'click': function(e){ .... },
    'mouseover': function(e){ .... },
    'mouseout': function(e){ .... }
}, '.someclass');
于 2012-12-05T21:36:15.263 に答える
0

おそらく、デリゲートがバインドよりも安定している理由は、デリゲートが live() と同じ結果を持つためです。これは、delegate() がイベントを動的に生成された要素にもバインドすることを意味します。

on() の使用に関する推奨事項については、live() と bind() の違いが好きでした。なぜなら、イベントバインディングの性質について何かを教えてくれたからです。

jQuery が on() 関数を最適化する方法がわかりません。Live() は常に bind() より少し重かったです。

于 2012-12-05T21:52:36.517 に答える
-1

ただし、delegate と live は bind と on とは異なる機能を持っていることに注意することが重要です。delegate と live は両方とも、イベントを現在および将来の要素にバインドします。on メソッドは、その時点で選択されている要素にのみアタッチされていました。

chris は、自分のページのユーザーが使用するイベントを適切にバインドおよびバインド解除していない可能性があるため、ページでより良い結果を確認していました。

彼はそれを個別に調べて、全体的に .on() に切り替える必要があります。

chris ... backbonejs や、このようなことをしてくれる他の MVC システムを調べることをお勧めします。

http://backbonejs.org/

于 2012-12-05T21:36:11.680 に答える