Dlaczego kliknięcie środkowe nie uruchamia „kliknięcia” w kilku przypadkach?
Tutaj jestJSFiddle zachowania, które widzę, związane z kliknięciem środkowym iclick
wydarzenie w Chrome i FF.
Podejście 1: Bind aclick
przewodnik bezpośrednio doa
element i środkowe kliknięcie wywoła obsługę w Chrome, ale nie w FF.
$('div a').on('click', function(ev) {
// middle click triggers this handler
});
Podejście 2: Powiąż delegowanegoclick
handler do adiv
który zawiera jeden lub więceja
. Środkowe kliknięcie będzienie uruchom ten program obsługi w Chrome lub FF.
$('div').on('click', 'a', function(ev) {
// middle click doesn't trigger this handler
});
To podejście jest niezwykle cenne, jeśli div zaczyna się pusty ia
elementy są wypełniane później przez wywołanie AJAX lub w wyniku pewnych danych wprowadzonych przez użytkownika.
Za pomocąmouseup
zamiastclick
powoduje, że oba podejścia 1 i 2 działają w obu przeglądarkach.
// 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
});
Tutaj jestJSFiddle zmouseup
.
Jest to interesujące i może być przydatne w niektórych przypadkach, ponieważmouseup
jest prawieclick
. Alemouseup
nie jest click
i jestem po zachowaniuclick
. Nie chcę tworzyć hackymousedown; setTimeout; mouseup
symulacjaclick
.
Jestem pewien, że odpowiedź brzmi „nie”, ale czy istnieje sposób, aby wywołać środkowe kliknięcieclick
obsługiwać? Jeśli nie, jakie są tego powody?