有人可以告诉我使用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*/ });
});
});
});
[从您给出的示例中,我认为您实际上是在问使用'bind'方法和'event'方法之间有什么区别,如果有的话。
例如,之间有什么区别:
$('.some_element').bind('click',function() { /* do stuff */ });
...还有这个?
$('.some_element').click(function() { /* do stuff */ });
答案是,这并不重要。这是一个偏好问题。事件方法在语法上更简单,并且涉及的键入更少,但是据我所知,实际上没有任何区别。我更喜欢使用bind方法,因为如果需要将多个事件附加到同一操作上,则可以使用速记事件绑定。它还使您更容易理解何时/是否需要“取消绑定”事件。
参见此处: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 */ });