2

有人可以告诉我使用 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*/ });
            });
    });
});
4

1 回答 1

6

从您提供的示例中,我认为您实际上是在问使用“绑定”方法和“事件”方法之间有什么区别(如果有的话)。

例如,有什么区别:

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

... 还有这个?

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

答案是真的没关系。这是一个偏好问题。事件方法在语法上更简单,涉及的输入更少,但是,据我所知,确实没有任何区别。我更喜欢使用绑定方法,因为如果您需要将多个事件附加到同一个操作,您可以使用速记事件绑定。它还使您更容易理解何时/是否需要“取消绑定”事件。

请参阅此处:.bind 和其他事件之间的区别

但是,从实际的问题来看,“'each' 方法和 'bind' 方法有什么区别”......好吧,那是完全不同的野兽。

你永远不应该真正使用 'each' 方法来附加事件,因为 'bind' 和 'event' 方法使用更快的CSS选择器引擎(在 jQuery 的情况下,它使用 Sizzle 引擎)。

几乎没有(或从来没有)这样的情况:

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

...比这更好:

$('.some_element').bind('click',function() { /* do stuff */ });
于 2009-04-16T15:15:44.710 回答