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

cho*_*sta 2 javascript each jquery bind function

谁能告诉我使用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.
                 });    
    })

}); 
Run Code Online (Sandbox Code Playgroud)

并使用each()执行相同的任务:

$('someElement').each(function(){

        $(this).mouseover(function(){$(this).css({/*change color*/})
                    .mouseout(function(){$(this).css({/*return to previous state*/});   
                    });     
                }); 
    });
Run Code Online (Sandbox Code Playgroud)

谢谢.

Kyl*_*ris 6

从你给出的例子中,我认为你实际上在询问使用'bind'方法和'event'方法之间有什么区别(如果有的话).

例如,有什么区别:

$('.some_element').bind('click',function() { /* do stuff */ });
Run Code Online (Sandbox Code Playgroud)

... 还有这个?

$('.some_element').click(function() { /* do stuff */ });
Run Code Online (Sandbox Code Playgroud)

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

请参阅:.bind与其他事件之间的区别

但是,从实际问题的问题来看,"'每种'方法和'绑定'方法之间有什么区别"......嗯,这是一个完全不同的野兽.

你应该从来没有真正使用"每个"的方法来连接事件,因为"绑定"和"事件"方法使用快CSS选择器引擎(在jQuery的情况下,它使用滋滋声引擎).

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

$('.some_element').each(function() { $(this).click(function() { /* do something */ }); });
Run Code Online (Sandbox Code Playgroud)

......比这更好:

$('.some_element').bind('click',function() { /* do stuff */ });
Run Code Online (Sandbox Code Playgroud)