Voici l'extrait de code HTML que j'ai:
<div id="tag-cloud-widget">
<div class="content">
<a href="#" rel="1" class="cloud-element" data-tag-id="10" style="font-size: 12px; color: rgb(205, 236, 222); ">T1</a>
<a href="#" rel="1" class="cloud-element" data-tag-id="1" style="font-size: 12px; color: rgb(205, 236, 222); ">T2</a>
<a href="#" rel="1" class="cloud-element" data-tag-id="3" style="font-size: 12px; color: rgb(205, 236, 222); ">T3</a>
</div>
</div>
Je voudrais configurer un gestionnaire de clic pour répondre au clic de l'utilisateur sur les balises d'ancrage. Voici le code de test:
$("#tag-cloud-widget .content a").click(function(e) {
alert('clicked');
return false;
});
Le gestionnaire de clics ci-dessus ne se déclenche pas et ceci non plus:
$("#tag-cloud-widget .content .cloud-element").click(function(e) {
alert('clicked');
return false;
});
Cependant,
$("#tag-cloud-widget .content").click(function(e) { ... });
et
$("#tag-cloud-widget").click(function(e) { ... });
se faire virer!
Qu'est-ce que je ne vois pas ???
Lors du traitement des événements de clic d’ancrage, utilisez toujours e.preventDefault();
lorsque vous n’avez de toute façon pas besoin de l’ancre. Les feux comme un charme
! CECI est testé et fonctionne.
Vous avez oublié de mettre votre code dans la fonction de préparation de document
$ (function () { // votre code });
La raison pour laquelle votre premier code ne fonctionne pas parce qu'il y a plusieurs ancres dans votre balise div content
; par conséquent, lorsque vous associez un ancre résidant dans cette balise à un clic, le choix de l'ancre exacte deviendra ambigu. Vous pouvez cibler une ancre particulière en utilisant son attribut id
, puis associer la id
à vos événements pour cibler une ancre particulière. Donc, le code sera comme suit.
<div id="tag-cloud-widget">
<div class="content">
<a href="#" rel="1" class="cloud-element" id="anca" data-tag-id="10" style="font-size: 12px; color: rgb(205, 236, 222); ">T1</a>
<a href="#" rel="1" class="cloud-element" id="ancb" data-tag-id="1" style="font-size: 12px; color: rgb(205, 236, 222); ">T2</a>
<a href="#" rel="1" class="cloud-element" id="ancc" data-tag-id="3" style="font-size: 12px; color: rgb(205, 236, 222); ">T3</a>
</div>
</div>
Et associeront ensuite les clics à une ancre particulière.
$("#tag-cloud-widget .content #anca").click(function(e) {
alert('Anchor A clicked');
return false;
});
$("#tag-cloud-widget .content #ancb").click(function(e) {
alert('Anchor B clicked');
return false;
});
$("#tag-cloud-widget .content #ancc").click(function(e) {
alert('Anchor C clicked');
return false;
});
Ecrivez votre code dans document.ready
et utilisez e.preventDefault
Écrivez comme ci-dessous:
$(document).ready(function(){
$("#tag-cloud-widget .content a").click(function(e) {
e.preventDefault();
alert('Clicked');
return false;
});
});