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.
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âu trả lời:
Đố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)
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.
+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)
;
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