Domanda

Ho il seguente codice che dovrebbe impedire che accada qualsiasi cosa quando si fa clic su un collegamento tranne l'attivazione e l'avviso.La destinazione del collegamento viene annullata, ma facendo clic sul collegamento si scorre fino alla parte superiore della pagina.Come posso fermare questo comportamento?Grazie

$('a#target').click(function(event){
    event.preventDefault();
    alert('End of demo');
});

AGGIORNAMENTO il mio collegamento è simile a questo:

<a href="#">Submit</a>
È stato utile?

Soluzione

No, preventDefault non dovrebbe fermare nulla, dovrebbe fare esattamente quello che dice: impedire l'azione predefinita.cioè.Se si fa clic su un collegamento con un href, verrà impedita l'azione predefinita del browser che consiste nel visitare quel collegamento.

Se vuoi interrompere tutti gli altri eventi collegati a quel collegamento, devi restituire false alla fine del gestore eventi E assicurarti che quel gestore eventi venga eseguito prima di tutti gli altri.

AGGIORNAMENTO:

Grazie per aver pubblicato il collegamento e il valore href.Scommetto che ciò che sta accadendo è che JavaScript riscontra un errore prima che il gestore dei clic possa essere attivato.Come indica correttamente il primo commento su questa risposta, preventDefault dovrebbe impedire al collegamento di passare anche agli ancoraggi all'interno della pagina.Se non funziona, probabilmente è perché c'è un errore JavaScript in un altro punto della pagina.

Detto questo, sei sicuro di aver pubblicato l'HTML corretto?

$('a#target').click(...

Allegato un gestore di clic a un collegamento simile al seguente:

<a href="#" id="target">Submit</a>

E un'ultima considerazione: se a un elemento di ancoraggio sono associate solo azioni tramite JavaScript, allora perché specificare l'attributo href dell'opzione?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top