2009-04-16 73 views
2

有人可以告訴我什麼分配事件處理程序之間的區別使用綁定():分配事件處理程序與jQuery中的bind()和each()之間的區別?

$(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 2009-04-16 15:05:27

+0

哦,我會修復。 ty – chosta 2009-04-16 15:10:16

回答

6

從你給出的例子中,我想你實際上是問在使用'bind'方法和'event'方法之間有什麼區別,如果有的話。

例如,有什麼區別:

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

...這?

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

答案是它確實無所謂。這是一個偏好問題。事件方法在語法上更簡單,涉及的輸入較少,但據我所知,確實沒有任何區別。我更喜歡使用綁定方法,因爲如果您需要將多個事件附加到相同的操作,則可以使用速記事件綁定。它還使得理解何時/是否需要「解除綁定」事件變得更加簡單。

在這裏看到:Difference between .bind and other events

但是,從實際問題問什麼,「什麼是‘每個’方法和‘綁定’方法之間的區別」 ......好吧,這是一個完全不同的野獸。

你不應該真的使用'each'方法來附加事件,因爲'bind'和'event'方法使用更快的CSS選擇器引擎(在jQuery的情況下,它使用Sizzle引擎)使用更多

有很少(或從不),其中這樣的情況:

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

...是比這更好:

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