J'ai un code comme celui-ci Func2 retourne vrai ou faux. Ensuite, Func1 est appelé que lorsque la fonction2 retourne true. Droite? P> En apprentissage jQuery, j'ai découvert que OnClick n'est pas bon et amorcé, j'ai donc modifié ci-dessus le code à p> MAINTENANT, ma question est la suivante: p> Une fois que le gestionnaire de clic est pris en charge, que puis-je faire avec JavaScript à l'intérieur de Href? Devrais-je appeler Func1 à l'intérieur de Func2 dans JQuery Click Handler of Func2, lorsque l'état de Func2 est vrai?
Ou y a-t-il une solution élégante? P> aussi, la séparation du code HTML et des événements est bon, mais ici cet élément avec ID Plus d'explications sur la question ci-dessus comme demandé, P > Je voulais dire ID101 peut avoir onclick, Onmouseover, Onmceout et de nombreux autres événements de ce type. Il peut y avoir beaucoup de tels éléments avec de nombreux gestionnaires d'événements. Comment puis-je mieux les repérer? Dans le style ancien, tous ces gestionnaires d'événements sont tous placés ensemble, comme celui-ci p> Je ne dis pas que c'est bon, mais au moins je peux voir que cela a cet événement OnClick. Mais maintenant, lorsque vous séparez cela dans le fichier JQuery, je dois rechercher d'abord ce fichier jQuery pour ID101, puis vérifier les événements associés à celui-ci, ce qui peut être un problème avec le fichier HTML ayant de nombreux éléments et des gestionnaires d'événements associés. Y a-t-il un meilleur moyen de trouver cette information? P> p> ID101 code> peut avoir de nombreux événements associés à celui-ci, et dans un grand Fichier, il pourrait y avoir tellement de éléments HTML avec de nombreux événements. Donc, lorsque j'ai une grande page avec de nombreux gestionnaires d'événements, alors comment puis-je savoir savoir quel élément HTML contient lequel et combien d'événements associés à celui-ci? P> Link Code>. P>
3 Réponses :
Oui, je vous recommande d'écrire Func1 à l'intérieur Func2. HTML:
$("#id101").click(func2() {
var status = false;
//func2 goes here and modifies status value.
if (status) {
// func1 goes here
} else {
// in case if status is false.
}
});
En fait, théoriquement, il n'y a pas de limite sur les événements et les gestionnaires. Il suffit de créer des gestionnaires pour eux. Je pense que vous pourriez utiliser des cours au lieu d'identifiants. S'il y a beaucoup de liens qui devraient avoir des gestionnaires javascript, essayez de les rassembler. comme lien lien 2 code> aussi si vous allez Nécessité de faire des travaux spécifiques sur toutes les questions, je vous recommande d'utiliser un autre attribut qui identifiera quel lien a été cliqué. et obtenir cet attribut avec .attr () code>
Et si vous ne voulez pas que votre page "sautillant" au sommet en cliquant sur ce lien (car elle fait référence à "#"), vous pouvez éventuellement utiliser quelque chose comme Link Span > code> à la place. Il suffit de styler cette étendue qu'il ressemble à un lien.
@otta: Oui, j'ai lu en utilisant # dans href est mauvais. L'utilisation en span et le style est une belle solution.
@VAHAGNMKRTCHYAN Je n'ai pas compris l'importance d'utiliser mod_unique_id. Quel plus il donne que d'utiliser une pièce d'identité normale?
@ODAA, ou retour false code> du gestionnaire pour empêcher l'action par défaut, c'est-à-dire sautant au sommet.
Le meilleur que je puisse vous dire est que c'est un code "malodorant" - vous ne voulez pas que votre javascript soit tout ce que vous êtes comme celui-ci. Je vous recommanderais de passer quelques heures de plus en plus d'apprentissage des fondamentaux de JQuery et de passer à partir de là. Je sais que cela peut être frustrant, surtout si vous travaillez avec legacy JavaScript. p>
Si je comprends correctement, vous voulez éviter le JavaScript en ligne, mais vous souhaitez également pouvoir regarder à un A code> et savoir s'il a un événement lié à celui-ci. Malheureusement, il n'y a pas de moyen acceptable de noter cela, comme l'inline JavaScript est une mauvaise nouvelle. Peut-être que vous pouvez simplement donner à votre élément une classe factice pour aider votre future lisibilité. Autre que cela, oubliez tout le Func1 code> et Func2 code> chose. Utilisez simplement une fonction anonyme à l'intérieur de votre reliure de clic. <a id="some_id" class="optional_has_click">Click Me</a>
<script type="text/javascript">
$(document).ready(function(){
$("#some_id").click(function(){
// do something
alert( $(this).attr("id") );
});
});
</script>
Oui, je veux éviter les JS en ligne mais également voir les événements associés à A code>. Et si je dois utiliser ce Func1 et Func2 dans de nombreux endroits, puis-je faire cela avec une fonction anonyme?
@endroix: Appelez simplement la fonction à l'intérieur de l'Anonymous, où je suis alerte en ce moment.
Ne mettez pas de JavaScript dans le "Href" du tout. Faites cela (conditionnellement, si vous voulez) dans le gestionnaire d'événements.
@endroix: Comme dit Poiny, supprimez simplement l'attribut tout
href code>. Inline JS est une mauvaise nouvelle. Et, lorsque vous vous battez avec le sélecteur JQuery, vous devez utiliser un «#» pour indiquer l'identifiant. À l'heure actuelle, votre jQuery ne fait probablement rien. Changez-le à$ ("# ID101"). Cliquez sur (); code> et supprimez-le de l'ensemblehref = "x" code>.@Josh, j'ai oublié ce #. Maintenant mis à jour