Ho alcuni collegamenti visualizzati su una pagina. Vorrei abilitarli/disabilitarli in base ad altri eventi nella pagina. C'è un modo per farlo con jQuery?Come abilitare/disabilitare dinamicamente i collegamenti con jQuery?
risposta
$('selector_for_links_to_disable').bind('click', function(e){
e.preventDefault();
})
e per l'abilitazione:
$('selector_for_links_to_enable').unbind('click')
Cercare di separare mentre è ancora la funzione di collegamento non funziona. Quindi devi usare "return true;". –
Si potrebbe fare qualcosa di simile:
$('.links').click(function(e){
if([some conditions]){
e.preventDefault();
}
});
Assicurarsi di dimostrare che non funzionano più in qualche modo, in caso contrario i vostri utenti confondersi, lol.
dipende da cosa intendi per "disabilita".
questo renderà loro non fanno nulla:
$("A").click(function() { return false; });
$(document).delegate('.links', 'click', function() {
if ([your condition is true]) {
return false;
}
})
delegazione è meglio che i gestori, in quanto è possibile chiamare prima il DOM è caricato
Si c un fare qualcosa di simile:
<script>
$(document).ready(function() {
$('input#disableall').live('click', function(){
$('a').attr('class', 'disabled');
alert('All links are disabled.');
});
$('input#enableall').live('click', function(){
$('a').attr('class', 'enabled');
alert('All links are enabled.');
});
$('a.disabled').live('click', function(event){
event.preventDefault();
});
});
</script>
<a href='http://www.google.com'>Google<a/>
<a href='http://www.yahoo.com'>Yahoo<a/>
<a href='http://www.hotmail.com'>Hotmail<a/>
<input type='button' id='disableall' value='Disable Links' />
<input type='button' id='enableall' value='Enable Links' />
Quando mi sto dando funzioni ai pulsanti di jQuery, mi piace fare questo:
indice = '';
$('myLink').live('click',function() {
if (indice !== 'value1'){
// your code
}
indice = 'value1';
return indice;
});
con questo, si ottiene la funzione solo la prima volta che si preme de pulsante. Ora devi solo impostare indice diverso da value1 al tuo link funziona di nuovo
stai usando html5? o xhtml? – RobertPitt
@robertpitt perché è rilevante? – Yahel
perché se si utilizza html5 allora si può usare 'data- *' per memorizzare i dati come stringhe, in modo da poter memorizzare l'href all'interno di 'data-href' e sostituire la corrente con un' # ', quindi creare un plugin per attivare questo, come '$ ('. disabled'). DisableClick();' puoi farlo con preventDefault ma stavo solo spiegando un modo per html5. – RobertPitt