2009-04-16 8 views
2

кто-то может сказать мне, что разница между присваивающих обработчиков событий с помощью BIND():Разница между назначением обработчиков событий с bind() и each() в jQuery?

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

}); 

и используя каждый() для одной и той же задачи:

$('someElement').each(function(){ 

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

спасибо.

+0

Ваш второй пример не демонстрирует «каждый» метод. Просто, чтобы вы знали ... – KyleFarris

+0

О, я исправлю. ty – chosta

ответ

6

Из приведенных вами примеров, я думаю, вы действительно спрашиваете, какая разница, если таковая существует, существует между использованием метода 'bind' и методов 'event'.

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

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

... и это?

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

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

Смотрите здесь: Difference between .bind and other events

Но от того, что спрашивает сам вопрос, «В чем разница между„каждого“метода и„привязки“метод» ... хорошо, что это совершенно другое животное.

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

Там вряд ли когда-либо (или никогда) случай, когда это:

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

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

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

Это то, что мне нужно было знать, спасибо. – chosta

+0

Приятно слышать, добро пожаловать! – KyleFarris