Sự khác biệt 1: bạn có thể gọi tất cả các phần tử được đối tượng JQuery khớp với trình kích hoạt.
// Ví dụ1 để kích hoạt. Tất cả 3 sự kiện nhấp nút được kích hoạt khi được kích hoạt. // Thử Thay thế phương thức kích hoạt bằng triggerHandler(). Bạn sẽ chỉ thấy trình xử lý sự kiện thành phần nút đầu tiên sẽ kích hoạt.
<button id = "button1">button1</button>
<button id = "button2">button2</button>
<button id = "button3">button3</button>
$("#button1").on("click", function(){
alert("button1 clicked");
});
$("#button2").on("click", function(){
alert("button2 clicked");
});
$("#button3").on("click", function(){
alert("button3 clicked");
});
// thay thế kích hoạt với triggerHandler để thấy sự khác biệt
$("#button1, #button2, #button3").trigger("click");
Difference 2: khi sử dụng triggerHandler() cho một sự kiện yếu tố, sự kiện có nguồn gốc sẽ không được gọi cho các phần tử đó. trigger() sẽ hoạt động tốt.
// Ví dụ:
// thay thế kích hoạt với triggerHandler để thấy sự khác biệt
<button id = "button1">button1</button>
<button id = "button2">button2</button>
$("#button1").on("click", function(){
$("#button2").trigger('click');
});
$("#button3").on("click", function(){
var value = $("#button2").triggerHandler('click');
alert('my value:'+ value)
});
$("#button2").on('click', function(){
alert("button2 clicked");
});
Difference 3: kích hoạt() trả về đối tượng jquery trong khi triggerHandler() trả về giá trị xử lý cuối cùng hoặc Nếu không có trình xử lý nào được kích hoạt, nó sẽ trả về undefined
// Example3
<button id="button1">Button1</button>
<button id="button2">Button2</button>
<button id="button3">Button3</button>
$("#button1").on("click", function(){
var myValue = $("#button2").trigger('click');
alert(myValue);
});
$("#button3").on("click", function(){
var value = $("#button2").triggerHandler('click');
alert('my value:'+ value)
});
$("#button2").on('click', function(){
alert("button2 clicked");
return true;
});
Sự khác biệt khác là
Sự kiện được kích hoạt bằng triggerHandler() không làm bong bóng phân cấp DOM; nếu chúng không được xử lý trực tiếp bởi phần tử đích, chúng sẽ không làm gì cả.
Tài liệu là lý do tôi đặt câu hỏi ngay từ đầu. Tôi hiểu hành vi, nhưng tôi tò mò nếu đây là một chức năng thuận tiện hoặc có một lý do sâu sắc hơn nó tồn tại. –
Bạn nghiêm túc bị bỏ phiếu vì bạn không hiểu các ví dụ được đưa ra trong tài liệu. Được rồi, hãy để tôi đánh vần nó cho bạn sau đó. – Robert
Bạn không cần phải upvote, bạn chỉ có thể không bỏ phiếu ở tất cả ... Tôi đã cho bạn nhiều ví dụ và bạn vẫn không hiểu, đó không phải là lỗi của tôi. Trong một số trường hợp, bạn không muốn trả về false trên một nhấp chuột thực tế, vì vậy # 1 là hợp lệ. # 2 Vâng ... đó là điểm, chỉ ẩn một, nhưng gọi toàn bộ mảng phù hợp. Vì vậy, bạn có thể setInterval rằng chức năng để tăng ẩn # 3 Xem # 1, với ý tưởng của bạn muốn hành động khác nhau dựa trên nhấp chuột thực tế vs mô phỏng. # 4 Nếu bạn muốn giá trị được trả lại bởi sự kiện thực tế cuối cùng mà không tạo một sự kiện mới. – Robert