有人可以告诉我使用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*/});
});
});
});
谢谢。
答案 0 :(得分: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 */ });