webentwicklung-frage-antwort-db.com.de

jQuery: $ (). click (fn) vs. $ (). bind ('click', fn);

Gibt es einen Unterschied zwischen der Click-Methode und der Verwendung von jQuery zum Anschließen eines Event-Handlers?

$().click(fn)

im Gegensatz zur Bindemethode

$().bind('click',fn);

Anders als der optionale Datenparameter von bind.

114
Alan Storm

Für das, was es wert ist, aus der jQuery-Quelle :

jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +
    "mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave," +
    "change,select,submit,keydown,keypress,keyup,error").split(","), function(i, name){

    // Handle event binding
    jQuery.fn[name] = function(fn){
        return fn ? this.bind(name, fn) : this.trigger(name);
    };
});

Also nein, es gibt keinen Unterschied -

$().click(fn)

anrufe

$().bind('click',fn)
137

+1 für Matthews Antwort, aber ich dachte, ich sollte erwähnen, dass Sie mit bind auch mehr als einen Event-Handler auf einmal binden können.

$('#myDiv').bind('mouseover focus', function() {
    $(this).addClass('focus')
});

das ist das viel sauberere Äquivalent zu:

var myFunc = function() {
    $(this).addClass('focus');
};
$('#myDiv')
    .mouseover(myFunc)
    .focus(myFunc)
;
97
nickf

Ein Unterschied besteht darin, dass Sie benutzerdefinierte Ereignisse mit dem zweiten Formular binden können, über das Sie verfügen. Ansonsten scheinen sie auch zu sein. Siehe: jQuery Event Docs

7
nickohrn

Ich finde die .click () ist viel logischer, aber ich denke, es ist, wie Sie Dinge denken.

$('#my_button').click(function() { alert('BOOM!'); });

Scheint so einfach zu sein, wie es nur geht.

1
JedH

Es gibt den [data] -Parameter von bind, der nur einmal zur Bindungszeit auftritt.

Sie können auch benutzerdefinierte Ereignisse als ersten Parameter von bind angeben.

1
aaron

Wenn Sie über Google Chrome verfügen und die Entwickler-Tools über ein Ereignis-Listener-Tool verfügen, wählen Sie das Element aus, dessen Ereignis Sie ausspähen möchten.

Sie werden feststellen, dass beide Methoden zum gleichen Ergebnis führen, sodass sie gleichwertig sind.

0
Omar Abid

Ich bevorzuge . Bind () wegen seiner Schnittstellenkonsistenz mit . Live (). Dadurch wird der Code nicht nur besser lesbar, sondern es ist auch einfacher, eine Codezeile so zu ändern, dass eine Methode anstelle der anderen verwendet wird.

0
danorton