2009-04-16 75 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 */ }); 
相关问题