用bind()和jQuery中的each()分配事件处理程序之间的区别?

问题描述 投票:2回答:1

有人可以告诉我使用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*/ });
            });
    });
});
javascript jquery function bind each
1个回答
6
投票

[从您给出的示例中,我认为您实际上是在问使用'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 */ });

© www.soinside.com 2019 - 2024. All rights reserved.