J'ai quelques liens affichés sur une page. Je voudrais les activer/désactiver en fonction d'autres événements sur la page. Est-il possible de faire cela avec jQuery?
$('selector_for_links_to_disable').bind('click', function(e){
e.preventDefault();
})
et pour permettre:
$('selector_for_links_to_enable').unbind('click')
Vous pourriez faire quelque chose comme:
$('.links').click(function(e){
if( [some conditions] ){
e.preventDefault();
}
});
Assurez-vous de montrer qu'ils ne fonctionnent plus d'une manière ou d'une autre, sinon vos utilisateurs seront confus, lol.
Vous pouvez faire quelque chose comme ça:
<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' />
cela dépend de ce que vous entendez par "désactiver".
cela ne leur fera rien faire:
$("A").click(function() { return false; });
$(document).delegate('.links', 'click', function () {
if ([your condition is true]) {
return false;
}
})
la délégation est meilleure que les gestionnaires, car vous pouvez les appeler avant que le dom ne soit chargé
Quand je donne des fonctions aux boutons par jquery, j'aime bien faire ceci:
indice = '';
$('myLink').live('click',function() {
if (indice !== 'value1'){
// your code
}
indice = 'value1';
return indice;
});
avec cela, vous obtenez la fonction juste la première fois que vous appuyez sur le bouton . Il ne vous reste plus qu'à définir l'indice différent de value1 pour que votre lien fonctionne à nouveau