La différence entre l'affectation des gestionnaires d'événements avec bind () et chaque () en jQuery?

StackOverflow https://stackoverflow.com/questions/756547

Question

quelqu'un peut me dire quelle est la différence entre l'affectation des gestionnaires d'événements en utilisant 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.
                 });    
    })

}); 

et en utilisant each () pour la même tâche:

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

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

merci.

Était-ce utile?

La solution

A partir des exemples que vous avez donné, je pense que vous demandez en fait ce que la différence, le cas échéant, est-il entre l'utilisation de la méthode « de liaison » et puis les méthodes « d'événement ».

Par exemple, quelle est la différence entre:

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

... et cela?

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

La réponse est que cela n'a pas d'importance. Il est une question de préférence. Les méthodes d'événement sont syntaxiquement plus simples et impliquent moins de frappe, mais, pour autant que je sache, il n'y a vraiment pas de différence. Je préfère utiliser les méthodes de grippage parce que vous pouvez utiliser un raccourci événement obligatoire si vous avez besoin d'attacher plus d'un événement à la même action. Il rend également plus simple à comprendre quand / si vous avez besoin de « délier » un événement.

Voir ici: .bind et d'autres événements

Mais, de ce que la question réelle demande: « Quelle est la différence entre la « chaque » et la méthode« bind » ... eh bien, c'est une bête totalement différente.

Vous ne devriez jamais vraiment utiliser la « chaque » méthode pour attacher des événements parce que les méthodes « bind » et « événement » utilisent beaucoup sélecteur CSS plus rapide du moteur (dans le cas de jQuery, il utilise le moteur de Sizzle ).

Il y a presque jamais (ou jamais) un cas où celle-ci:

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

... est mieux que cela:

$('.some_element').bind('click',function() { /* do stuff */ });
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top