JQuery: rendere cliccabile intero blocco, preservando la possibilità di aprirsi in una nuova scheda/finestra
-
28-10-2019 - |
Domanda
Non voglio usare CSS per espandere la larghezza/altezza del collegamento ecc.
Con il mio codice, l'intera Li è cliccabile, apre il link che si trova al suo interno. Ho preservato il clic centrale del mouse per aprire il collegamento in una nuova finestra.
Mi chiedo se qualcuno che in realtà sa davvero cosa stanno facendo può guidarmi in questo e farmi sapere se questo è il modo migliore per scrivere questo, o ci sono alterazioni che potrebbero essere apportate al mio codice?
Inoltre: qualcuno può aiutarmi ad aggiungere un "CTRL+clic sinistro" per aprire il link in una nuova finestra, che è la stessa cosa che fa un clic di un pulsante medio-mouse, non sono sicuro di come testare CTRL? Ho pensato di cambiare il
else if ((e.which == 2)) {
parte aelse if ((e.which == 2) && (e.which == 16)) {
funzionerebbe, ma non lo fa.
codice:
$('li a').each(function() {
$(this).parent().bind('click', function(e) {
if((e.which == 1)) {
alert('left mouse button clicked')
window.location=$(this).find("a").attr("href"); return false;
}
else if ((e.which == 2)) {
alert('middle mouse button clicked')
window.open($(this).find('a').attr('href'));
return false;
}
});
});
Soluzione
Ecco la tua guida per rilevare quali chiavi vengono premute (è tutto il mondo in arrivo): http://www.quirksmode.org/js/keys.html
Si noti che su OSX è impossibile nella maggior parte dei browser.