Làm cho nó hoạt động thành công bằng cách sử dụng 2 phương pháp: đóng gói Stephan202 và nhiều trình xử lý sự kiện. Tôi có 3 tab tìm kiếm, chúng ta hãy xác định văn bản đầu vào id của họ trong một mảng:
var ids = new Array("searchtab1", "searchtab2", "searchtab3");
Khi hàm lượng thay đổi searchtab1, tôi muốn cập nhật searchtab2 và searchtab3. Đã làm nó theo cách này cho đóng gói:
for (var i in ids) {
$("#" + ids[i]).change(function() {
for (var j in ids) {
if (this != ids[j]) {
$("#" + ids[j]).val($(this).val());
}
}
});
}
Nhiều người nghe sự kiện:
for (var i in ids) {
for (var j in ids) {
if (ids[i] != ids[j]) {
$("#" + ids[i]).change(function() {
$("#" + ids[j]).val($(this).val());
});
}
}
}
Tôi thích cả hai phương pháp, nhưng các lập trình viên chọn đóng gói, tuy nhiên nhiều người nghe sự kiện cũng làm việc. Chúng tôi đã sử dụng Chrome để kiểm tra.
điều gì sẽ xảy ra theo cách riêng? và làm thế nào để người bản địa biết cách loại bỏ một cái cụ thể? – SuperUberDuper
Theo DOM Cấp 3 (tham chiếu HTML 5 spec), trình xử lý sự kiện được thực thi theo thứ tự mà chúng được đăng ký - http://www.w3.org/TR/DOM-Level-3-Events/#event-phase và http://www.w3.org/TR/2014/REC-html5-20141028/webappapis.html#event-handler-attributes. Xử lý sự kiện có thể được loại bỏ bằng cách chuyển một tham chiếu đến trình xử lý đã được đăng ký –
@RussCam điều gì sẽ xảy ra nếu cùng một trình xử lý bị ràng buộc nhiều hơn một lần cho phép chỉ nói 'jQuery ('. Btn'). 'được gọi ở những nơi khác nhau mà không thực sự' .off' nó bất kỳ? –