Dưới đây là JSFiddle về hành vi mà tôi thấy, liên quan đến nhấp chuột giữa và sự kiện click
trong Chrome và FF.Tại sao nhấp chuột giữa không kích hoạt 'nhấp' trong một số trường hợp?
nghe tiếng 'click' kinda sorta làm việc
Cách tiếp cận 1: Bind một handler click
trực tiếp đến một a
phần tử và một trung nhấp chuột sẽ kích hoạt các handler trong Chrome nhưng không phải trong FF.
$('div a').on('click', function(ev) {
// middle click triggers this handler
});
Cách tiếp cận 2: Bind một giao click
xử lý để một div
mà chứa một hoặc nhiều a
. Nhấp chuột giữa sẽ không phải kích hoạt trình xử lý này trong Chrome hoặc FF.
$('div').on('click', 'a', function(ev) {
// middle click doesn't trigger this handler
});
Cách tiếp cận này là rất có giá trị nếu div bắt đầu ra trống rỗng và a
yếu tố này được điền vào sau đó bằng một cuộc gọi AJAX, hoặc là kết quả của một số đầu vào người dùng.
'mouseup' làm việc
Sử dụng mouseup
thay vì click
nguyên nhân cả hai cách tiếp cận 1 và 2 để làm việc trong cả hai trình duyệt.
// Approach 1 w/ mouseup
$('div a').on('mouseup', function(ev) {
// middle click **does** trigger this handler in Chrome and FF
});
// Approach 2 w/ mouseup
$('div').on('mouseup', 'a', function(ev) {
// middle click **does** trigger this handler in Chrome and FF
});
Đây là JSFiddle với mouseup
.
Điều này thật thú vị và có thể hữu ích trong một số trường hợp, bởi vì mouseup
gần như là click
. Nhưng mouseup
không phải làclick
và tôi sau hành vi của click
. Tôi không muốn tạo mô phỏng mousedown; setTimeout; mouseup
hacky của click
.
Tôi khá chắc chắn câu trả lời là "không", nhưng có cách nào giữa các trình duyệt gây ra nhấp chuột giữa để kích hoạt trình xử lý click
không? Nếu không, lý do tại sao là gì?
Tôi đánh giá cao câu trả lời của bạn, tuy nhiên tôi đã nêu trong câu hỏi "Tôi không muốn tạo ra một hacky' mousedown; setTimeout; mouseup' mô phỏng 'click'." Việc phát minh lại nhấp chuột có vẻ như là một ý tưởng tồi, nhưng tôi sẽ cân nhắc lại ưu và khuyết điểm. – mwcz
Và tôi đã nói trong câu trả lời của tôi rằng đó là cách đáng tin cậy duy nhất để nắm bắt một cú nhấp chuột vào nút giữa, không có lựa chọn thay thế. – adeneo
Có cần sử dụng so sánh === thay vì == không? Tại sao? Cảm ơn. –