Comment dois-je appeler mon javascript. href, onclick ou lier l'événement de clic?
Je sais qu'il y a déjà beaucoup d'articles au sujet de ce concept, mais ma question a un peu de différence.
Sur ma page, j'ai un lien:
<a id="mylink">click me </a>
Alors je vais changer le href dynamiquement à l'aide de:
$get('mylink').href = 'javascript:doSomething(id);';
Il arrive que je dois appeler le code ci-dessus à plusieurs reprises j'ai donc remplacer la valeur courante de l'attribut "href" javascript code d'appeler la même fonction avec différents id de paramètre.
Ci-dessus est ce que j'utilise depuis un long moment maintenant. Mais le désordre a commencé quelques sime ans quand je suis en train de mettre en œuvre OnNavigateAway pour avertir l'utilisateur lorsqu'il ferme la fenêtre du navigateur. IE sera également déclencher ce onNavigateAway cas lorsque l'utilisateur clique sur une ancre avec une valeur pour l'attribut href.
J'ai donc commencé à remplacer ceux href avec jquery cliquez sur événements:
$("#mylink").click(function (e) {
doSomething(id);
e.preventDefault();
});
Mais n'oubliez pas que ce code peut être appelée plusieurs fois, donc je dois me séparer l'événement click d'abord et ensuite lier de nouveau:
function completed(result) {
$("#mylink").unbind('click');
$("#mylink").click(function (e) {
doSomething(result.id);
e.preventDefault();
});
}
Est-ce une bonne façon de gérer mon javascript? Ou est-ce de liaison et séparer des trucs pas bonne pratique?
Une autre façon de faire peut être de remplacer l'attribut onclick manuellement avec javascript.
Comment voulez-vous gérer cela?
Je suis impatient de votre réponse.
Vous devez vous connecter pour publier un commentaire.
Je voudrais utiliser une logique différente ici. Au lieu de les réacheminer l'événement click, je vais juste changer quelques données de propriété puis dans le "global", cliquez sur utiliser cette propriété:
Puis, quand vous avez besoin de changer qui
id
ont un tel code:De cette façon, les appels répétés à modifier les données seulement le dernier à affecter par exemple
Lorsque l'utilisateur clique dessus, 7 sera passé à la fonction.
En direct des cas de test.
Dans le cas où l'élément est créé dynamiquement et en supposant que vous êtes à l'aide de jQuery 1.7 ou ci-dessus, vous pouvez utiliser le
.on
pour attraper, même ceux créés dynamiquement des éléments:$(document).ready(function() {...})
vous ne devriez pas avoir de problème, sauf si le lien est créé dynamiquement en quelque sorte?.live()
mécanisme de jQuery$("#mylink").live("click", function (e) {
et il doit encore travailler. mise à Jour de violon.