11540 sujets

JavaScript, DOM et API Web HTML5

Pages :
Bonjour,

Tu peux passer par un bout de code jQuery :


$("a").click(function() {
  alert("J'ai cliqué sur mon a, j'enlève l'attribut href [smile]");
  $(this).removeAttr("href");
});


@+

Sam
Ok, dans ce cas il faut faire un unbind de l'event click une fois le lien "exécuté".

Pourle jQuery, tu peux charger la librairie très simplement comme ceci :


<script src="http://www.google.com/jsapi" type="text/javascript"></script>
		<script type="text/javascript">
			google.load("jquery", "1.7.1");
			google.load("jqueryui", "1.7.3");
</script>


Ensuite, tu peux utiliser unbind au lieu du removeAttr.

Pour ne pas prendre tous les <a> dans ton cas, il faut que tu joues sur le sélecteur $("a")

Toutes les infos sont ci : http://api.jquery.com/unbind/

@+

Sam
Salut,

Ceci devrait fonctionner : exemple

A la place de #monLien, tu cibles ton ou tes liens...
Forcément ton lien ne doit pas recharger ou remplacer la page active (traitement full JS ou nouvelle fenêtre). Dans ce cas, il faudrait gérer cela via session, cookies,...

tm
Salut,

Les ids sont des identifiants uniques donc du ne peux pas avoir 36 liens avec la meme valeur pour l'attribut id. Passe par une classe CSS pour ca.

Aussi stock ce que tu passe a ta fonction js addText2 dans un attribut data de ton lien que tu recuperera facilement avec jQuery (dispo a partir de la version 1.4.3 je crois)

ca ne fonctionne pas ca?

dans ta boucle php

while(..)
echo '<a href="#" data-recupe="' . $recupesolution . '" class="blabla">'.$recupesolution.'</a>';


ton code js


(function ($) {
    var clicked = false;
    $('.blabla').click(function() {
        if (clicked) {
            return false;         
        }
        clicked = true;
        addText2($(this).data('recupe'));
        // faire d'autre trucs ici, si necessaire
        // on peut aussi faire this.href = null 
        return true;
    });        

})(jQuery);



J'ai pas teste par contre
Modifié par martint (13 Aug 2012 - 15:16)
si tu utilises le bout de code php et js que je t'ai donne, comme le selecteur jQuery du code javascript target les liens avec la classe ".blabla", la premiere fois qu'un lien qui a cette classe est clique, la fonction addtext2() est appeler. Les autres fois, rien n'est fait, quelque soit le lien qui est clique. Si je comprends bien ce que tu cherches, ca devrait resoudre ton probleme.

Evidemment il ne faut pas mettre de onclick a tes liens mais passer par une fonction js, sinon ca prendra le dessus, c'est pour cela que tu peux utiliser l'attribut data-* pour y mettre ta valeur recuperee de ta base de donnee, et ensuite la recuperer avec la methode jQuery data().

Si tu poste le balisage html final produit par ton code php, et le js correspondant que tu utilises ca aiderait pour faire un jsfiddle si vraiment ca ne resout pas ton pb.
Ce dont on a besoin c'est aussi le code HTML. En gros ce que tu vois quand tu vas sur la page avec ton navigateur et que tu fais un clic droit => Afficher la source. Juste le bout de code HTML qui correspond au probleme. Pas toute la page.

Utiliser l'attribut "onclick" directement sur un element HTML est une mauvaise pratique. Tu devrais passer par javascript/jQuery et ajouter une fonction d'ecoute de l'evenement clic a ton objet.
Re,

Y a-t-il d'autres fonctions appelées lors du clic ?
Si non, tu supprimes ta fonction addText2 et tu places toutes les instructions dans mon bout de code, juste après l'ouverture de la fonction ! (exemple mis à jour)

tm
Declare ta fonction addText2() en dehors et appelle la a l'interieur de ta fonction qui gere le clique.

function addText2 (...) {
 ...
}
$('....').click(function() { 
   addText2($(this).text()); 
   $(this).off('click').removeAttr('href');
   return false;        
});

Modifié par martint (13 Aug 2012 - 16:43)
Pages :