jQuery: $ (). click (fn) so với $ (). bind ('click', fn);


115

Khi sử dụng jQuery để kết nối một trình xử lý sự kiện, có sự khác biệt nào giữa việc sử dụng phương thức nhấp chuột không

$().click(fn)

so với sử dụng phương thức ràng buộc

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

Khác với tham số dữ liệu tùy chọn của bind.


Có vẻ như lần nhấp cũng có tham số dữ liệu tùy chọn. Bất kỳ ai biết nếu có bất kỳ sự khác biệt nào giữa cách nó hoạt động? Nguồn: api.jquery.com/click
Nick Udell

Câu trả lời:


137

Đối với những gì nó đáng giá, từ nguồn 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);
    };
});

Vì vậy, không, không có sự khác biệt -

$().click(fn)

cuộc gọi

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

6
True - click()về cơ bản là viết tắt cho bind('click')(hoặc, trong ngày hôm nay một tuổi, nó thực sự gọi là on('click')Con đường tôi nhìn thấy nó, bạn cũng có thể tiết kiệm cho mình mà thêm lời gọi hàm bằng cách sử dụng. on('click')Trực tiếp.
Nix

Chúng làm tương tự nhưng bind (), giả sử bạn muốn nói rằng, tôi muốn điều gì đó xảy ra khi sử dụng di chuột VÀ nhấp chuột, v.v. Xem stackoverflow.com/a/519455/292408 bên dưới để làm ví dụ. Tất nhiên, bạn chỉ có thể liên kết với một sự kiện, chẳng hạn như 'nhấp chuột'.
Elijah Lynn

98

+1 cho câu trả lời của Matthew, nhưng tôi nghĩ tôi nên đề cập rằng bạn cũng có thể liên kết nhiều trình xử lý sự kiện trong một lần sử dụng bind

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

cái nào sạch hơn nhiều tương đương với:

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

20
+1 Điều đó liên kết nhiều sự kiện là tin tức đối với tôi và có thể khá hữu ích.
cletus

7

Có một điểm khác biệt là bạn có thể liên kết các sự kiện tùy chỉnh bằng cách sử dụng biểu mẫu thứ hai mà bạn có. Nếu không, chúng dường như đồng nghĩa. Xem: Tài liệu sự kiện jQuery


1

Có tham số [dữ liệu] của ràng buộc sẽ chỉ xảy ra tại thời điểm ràng buộc, một lần.

Bạn cũng có thể chỉ định các sự kiện tùy chỉnh làm tham số đầu tiên của ràng buộc.


1

Tôi thấy .click () hợp lý hơn, nhưng tôi đoán đó là cách bạn nghĩ về mọi thứ.

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

Có vẻ như sẽ chết đơn giản như bạn nhận được.


0

Nếu bạn có Google Chrome, công cụ dành cho nhà phát triển của họ có công cụ lắng nghe sự kiện, hãy chọn phần tử bạn muốn theo dõi sự kiện 'của nó.

Bạn sẽ thấy rằng thử cả hai cách đều dẫn đến cùng một kết quả, vì vậy chúng tương đương nhau.


0

Tôi thích .bind () hơn vì giao diện của nó nhất quán với .live () . Nó không chỉ làm cho mã dễ đọc hơn mà còn giúp dễ dàng thay đổi một dòng mã để sử dụng một phương pháp thay vì phương pháp khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.