Разница между назначением обработчиков событий с помощью Bind() и Each() в jQuery?

StackOverflow https://stackoverflow.com/questions/756547

Вопрос

может ли кто-нибудь сказать мне, в чем разница между назначением обработчиков событий с помощью метода связывания():

$(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*/});   
                    });     
                }); 
    });

Спасибо.

Это было полезно?

Решение

Судя по приведенным вами примерам, я думаю, вы на самом деле спрашиваете, в чем разница, если таковая имеется, между использованием метода «привязки» и методами «события».

Например, в чем разница между:

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

...и это?

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

Ответ в том, что это действительно не имеет значения.Это вопрос предпочтений.Методы событий синтаксически проще и требуют меньшего набора текста, но, насколько мне известно, особой разницы нет.Я предпочитаю использовать методы привязки, потому что вы можете использовать сокращенную привязку событий, если вам нужно прикрепить более одного события к одному и тому же действию.Это также упрощает понимание того, когда/нужно ли вам «отвязать» событие.

Глянь сюда: Разница между .bind и другими событиями

Но из того, что спрашивается на самом деле: «В чем разница между методом «каждый» и методом привязки»…ну это совсем другой зверь.

Никогда не следует использовать метод «each» для прикрепления событий, поскольку методы «bind» и «event» используют много более быстрый движок выбора CSS (в случае jQuery он использует движок Sizzle).

Вряд ли когда-либо (или никогда) не бывает случая, когда это:

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

...лучше, чем это:

$('.some_element').bind('click',function() { /* do stuff */ });
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top