2

bind() を使用してイベント ハンドラーを割り当てることの違いを教えてください。

$(function () {
    $('someElement')
        .bind('mouseover', function (e) {
            $(this).css({
                //change color
            });
        })
        .bind('mouseout', function (e) {
            $(this).css({
                //return to previous state

            });
        })
        .bind('click', function (e) {
            $(this).css({
                //do smth.
            });
        })
});

同じタスクに each() を使用する:

$('someElement').each(function () {
    $(this).mouseover(function () {
        $(this).css({/*change color*/ })
            .mouseout(function () {
                $(this).css({/*return to previous state*/ });
            });
    });
});
4

1 に答える 1

6

あなたが与えた例から、あなたは実際に「bind」メソッドと「event」メソッドの使用の間に違いがあるかどうかを尋ねていると思います。

たとえば、次の違いは何ですか。

$('.some_element').bind('click',function() { /* do stuff */ });

... この?

$('.some_element').click(function() { /* do stuff */ });

答えは、それは本当に問題ではないということです。それは好みの問題です。イベントメソッドは構文的に単純で、入力も少なくて済みますが、私が知る限り、実際には違いはありません。同じアクションに複数のイベントをアタッチする必要がある場合は、短縮イベントバインディングを使用できるため、bindメソッドを使用することをお勧めします。また、イベントを「バインド解除」する必要がある場合/必要な場合を簡単に理解できます。

ここを参照してください:.bindと他のイベントの違い

しかし、実際の質問から、「「each」メソッドと「bind」メソッドの違いは何ですか」...まあ、それはまったく異なる獣です。

'bind'メソッドと'event'メソッドははるかに高速なCSSセレクターエンジン(jQueryの場合はSizzleエンジンを使用)を使用するため、イベントをアタッチするために'each'メソッドを実際に使用しないでください。

これが発生するケースはほとんどありません(またはまったくありません)。

$('.some_element').each(function() { $(this).click(function() { /* do something */ }); });

...これよりも優れています:

$('.some_element').bind('click',function() { /* do stuff */ });
于 2009-04-16T15:15:44.710 に答える