2011-08-28 1 views
1

J'ai le code folllowing:JQuery logique bind() appeler deux fois, seulement sur reload

$(document).ready(function() { 
     $("#Titles .item a").each(function (index, domEle) { 
     // 1) 
     $(this).ttip($.extend(true, {}, ttip_opts, { 
       content: { 
        text: $(this).attr('title'), 
        title: { 
         text: "SomeText" 
        } 
       } 
      })); 
     // 2) 
      $(this) 
       .bind("click", function (event) { 
        alert(this); 
       }) 
       .attr('title', ''); 
     }); 
}); 

Lorsque je clique sur « reload » sur la page et cliquez sur le lien, la déclaration d'alerte apparaît deux fois. Sur les clics suivants, il apparaît une fois.

Lorsque je commente la déclaration # 1, elle n'apparaît qu'une seule fois à chaque fois.

Que se passe-t-il ici? Comment puis-je obtenir l'instruction d'alerte à afficher une fois à chaque fois? Il n'y a qu'un seul élément d'ancrage dans l'élément que je traverse.

Mise à jour

je toujours obtenir deux clics sur ma méthode (maintenant appelé à partir d'un autre script), même lorsque je retire la liaison à l'événement de clic. Ainsi, chaque fonction exécute définitivement la logique dans la méthode click() sur le rechargement uniquement. J'essaye toujours de comprendre comment je peux déterminer si elle est appelée sur le rechargement, donc j'ignore au moins la logique que je ne veux pas courir deux fois.

+0

Vous avez oublié de mettre votre "$ (document) .ready (function() {" balise de fermeture? –

+0

Oui .. vérifié la balise de fermeture est dans le script. – duckus

Répondre

0

Je pense que le plugin ttip déclenche l'événement click sur l'élément qui, à mon avis, n'est pas nécessaire. Vous pouvez essayer ceci qui arrête la propagation de l'événement.

$(document).ready(function() { 
     $("#Titles .item a").each(function (index, domEle) { 
      // 2) 
      $(this) 
       .bind("click", function (event) { 
        alert(this); 
        return false; 
      }).attr('title', ''); 

     // 1) 
     $(this).ttip($.extend(true, {}, ttip_opts, { 
       content: { 
        text: $(this).attr('title'), 
        title: { 
         text: "SomeText" 
        } 
       } 
     })); 
    }); 
}); 
+0

Cette suggestion ne fonctionne pas vraiment. La modification l'ordre autour de résultats dans une référence d'objet invalide pour ttip. – duckus