Почему средний щелчок не вызывает щелчок в нескольких случаях?
Вот'сJSFiddle поведения явидя, касаясь среднего щелчка иclick
событие в Chrome и FF. '
Подход 1: Привязатьclick
обработчик непосредственно кa
Элемент и средний щелчок вызовут обработчик в Chrome, но не в FF.
$('div a').on('click', function(ev) {
// middle click triggers this handler
});
Подход 2: Связать делегированныйclick
обработчикdiv
который содержит один или несколькоa
, Средний щелчок будетне вызвать этот обработчик в Chrome или FF.
$('div').on('click', 'a', function(ev) {
// middle click doesn't trigger this handler
});
Этот подход чрезвычайно полезен, если div начинается с пустогоa
элементы заполняются позже с помощью вызова AJAX или в результате некоторого пользовательского ввода. '
С помощьюmouseup
вместоclick
заставляет оба подхода 1 и 2 работать в обоих браузерах.
// 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
});
Вот'сJSFiddle с .mouseup
Это интересно и может быть полезно в некоторых случаях, потому чтоmouseup
почтиclick
, Ноmouseup
не click
, и я'м после поведенияclick
, Я не хочу создавать хакиmousedown; setTimeout; mouseup
симуляция .I 'click
Я уверен, что ответ "Нету", но есть ли кросс-браузерный способ вызвать срабатывание среднего щелчкаclick
обработчики? Если нет, то каковы причины?