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


115

Saat menggunakan jQuery untuk menghubungkan event handler, apakah ada perbedaan antara menggunakan metode klik

$().click(fn)

versus menggunakan metode mengikat

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

Selain parameter data opsional bind.


Sepertinya klik juga memiliki parameter data opsional. Ada yang tahu jika ada perbedaan antara cara kerjanya? Sumber: api.jquery.com/click
Nick Udell

Jawaban:


137

Untuk apa nilainya, dari sumber jQuery :

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);
    };
});

Jadi tidak, tidak ada perbedaan -

$().click(fn)

panggilan

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

6
Benar - click()pada dasarnya adalah singkatan untuk bind('click')(atau, di zaman sekarang ini, panggilan sebenarnya on('click'). Menurut saya, Anda mungkin juga menyimpan panggilan fungsi tambahan itu dengan menggunakan on('click')secara langsung.
Nix

Mereka melakukan hal yang sama tetapi bind () katakanlah, saya ingin sesuatu terjadi saat penggunaan melayang DAN klik, dll. Lihat stackoverflow.com/a/519455/292408 di bawah sebagai contoh. Anda tentu saja hanya dapat mengikat ke satu peristiwa, misalnya 'klik' juga.
Elijah Lynn

98

+1 untuk jawaban Matthew, tetapi saya pikir saya harus menyebutkan bahwa Anda juga dapat mengikat lebih dari satu pengendali acara sekaligus menggunakan bind

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

yang jauh lebih bersih setara dengan:

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

20
+1 Beberapa peristiwa yang mengikat adalah berita bagi saya dan mungkin sangat berguna.
cletus

7

Ada satu perbedaan di mana Anda dapat mengikat acara khusus menggunakan formulir kedua yang Anda miliki. Jika tidak, mereka tampaknya sinonim. Lihat: jQuery Event Docs


1

Ada parameter [data] dari bind yang hanya akan terjadi pada waktu-bind, satu kali.

Anda juga dapat menentukan peristiwa khusus sebagai parameter pertama dari bind.


1

Menurut saya .click () jauh lebih logis, tapi saya rasa begitulah cara Anda memikirkan berbagai hal.

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

Tampaknya sesederhana yang Anda dapatkan.


0

Jika Anda memiliki Google Chrome, alat pengembang mereka memiliki alat pendengar acara, pilih elemen yang Anda ingin untuk memata-matai acara.

Anda akan menemukan bahwa mencoba kedua cara tersebut menghasilkan hasil yang sama, jadi keduanya setara.


0

Saya lebih suka .bind () karena konsistensi antarmukanya dengan .live () . Tidak hanya membuat kode lebih mudah dibaca, tetapi juga memudahkan untuk mengubah baris kode untuk menggunakan satu metode daripada yang lain.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.