Phương thức triggerHandler
Phương thức triggerHandler cho phép kích hoạt
tất cả trình xử lý sự kiện được gắn với phần tử. Nó
hoạt động tương tự như phương thức
trigger,
nhưng giữa chúng tồn tại sự khác biệt:
Trình xử lý sự kiện sẽ được kích hoạt, nhưng sự kiện
mặc định sẽ không được gọi. Ví dụ
triggerHandler('submit'),
sau khi kích hoạt, sẽ không gọi sự kiện submit.
Phương thức triggerHandler chỉ tác động
lên phần tử đầu tiên trong tập hợp.
Sự kiện được kích hoạt bởi triggerHandler
không nổi bọt lên trong hệ thống phân cấp phần tử DOM.
triggerHandler không trả về đối tượng jQuery,
nó trả về giá trị nhận được từ trình xử lý
được gọi cuối cùng. Nếu không có trình xử lý nào
được kích hoạt, thì nó trả về undefined.
Cú pháp
Là tham số đầu tiên, chúng ta có thể truyền loại sự kiện dưới dạng chuỗi, tham số thứ hai không bắt buộc là một mảng hoặc đối tượng, chứa các tham số bổ sung để truyền cho trình xử lý:
$(selector).triggerHandler(loại sự kiện, [các tham số bổ sung]);
Có thể truyền sự kiện làm tham số đầu tiên
dưới dạng đối tượng jQuery.Event:
$(selector).trigger(sự kiện, [các tham số bổ sung]);
Ví dụ
Hãy làm sao để khi nhấn vào nút
với #test1 thì ô input của chúng ta sẽ nhận được tiêu điểm và trong
bảng điều khiển sẽ in ra 'Focused', nói cách khác
- cả hàm xử lý lẫn
sự kiện tiêu điểm đều được kích hoạt. Khi nhấn vào nút thứ hai
với #test2 thì chỉ có hàm xử lý được kích hoạt,
nhưng ô input sẽ không nhận được tiêu điểm:
<button id="test1">button1</button>
<button id="test2">button2</button>
<input type="text">
$('#test1').click(function() {
$('input').trigger('focus');
});
$('#test2').click(function() {
$('input').triggerHandler('focus');
});
$('input').focus(function() {
console.log('Focused')
});