Je viens de commencer à regarder JQuery. Je n'ai pas AJAX dans mon application web actuellement.JQuery: Pourquoi la fonction JavaScript/Document Ready est-elle discrète plutôt que l'événement OnClick?
Mon JavaScript existant dans mon HTML ressemble à:
<form ...>
<p>Find what? <input ...></p>
<div class="ButtonArray">
<a href="AddRecord.ASP&Action=ADD">ADD</a>
<a href="#" onClick="return MyFormSubmit();">FIND</a>
</div>
</form>
Cette affiche des boutons pour [Ajouter] et [Trouver]. Pour trouver, il est nécessaire de soumettre le formulaire, et j'utilise MyFormSubmit() qui valide les données, ajoute un effet visuel à la page, puis POST les données.
Je pourrais ajouter une classe ou ID à pour le bouton Rechercher et JQuery je pouvais écrire quelque chose comme:
$(function() {
$(".MySearchButtonClass").click(function() {
// validate and process form here
});
});
A mon stade « novice » d'accord avec JQuery Je ne obtenir pourquoi je le ferais de cette façon
Mon ancienne méthode identifie la méthode près de l'objet. Il y a peut-être un risque que le JS ne soit pas chargé avant que l'utilisateur n'appuie sur le bouton (est-ce que le chargement du JS est juste en haut de la page). La méthode JQuery Document Ready ne sera pas activée tant que le document n'est pas chargé (ce qui, je présume, garantit que le JS est présent et prêt à être exécuté?), Mais déplace le code vers une partie distincte de mon HTML. fichier - donc quand je vois la DIV MyButtonArray dans la source HTML, il n'est pas évident pour moi quels objets ont des méthodes, et lesquels ne le font pas.
Pouvez-vous s'il vous plaît m'aider à comprendre quelles sont mes options et les avantages/getchas que je devrais rechercher?
Modifier: Je suis à l'aise que la manipulation DOM - comme un LightBox qui peut apparaître quand une vignette avec classe « LightBoxThumb » est cliqué - utiliserait Javascript Unobtrusive.
Cependant, j'ai du mal à me persuader qu'un bouton qui a une action spécifique devrait avoir sa méthode appliquée de cette façon. (Je ne mettrais certainement pas de code sur le bouton autre qu'un seul appel de fonction à quelque chose "ailleurs", mais à mon avis c'est mon meilleur indice quant à ce que fait ce bouton, et les couches de Javascript discret peuvent rendre plus difficile pour déterminer)
Edit2 -. réponse
Accepté J'ai pris réponse Russ Cams. Il décrit Javascript discret d'une manière qui m'a été utile pour comprendre plus sur comment & quand cela devrait être utilisé.
Pour le moment (peut changer quand j'ai plus d'expérience!) Je vais m'en tenir à un événement OnClick pour une seule action, non changeante, sur un objet car je pense que ce sera plus facile pour moi de déboguer - et diagnostiquer si des problèmes surviennent. Pour ZebraStripes sur une table qui permet de cliquer sur la rubrique colonne pour trier (et les situations de ce type), je peux voir les avantages de l'approche Unobtrusive Javascript
dernier commentaire de Russ a été particulièrement utile, répété ici:
"@Kristen - Vous avez raison, comme beaucoup des sujets de programmation, il y a plus de qu'une approche et les gens vont se tenir avec véhémence par leurs croyances!Si nous parlons d'une seule méthode pour un seul bouton, je comprends tout à fait où vous venez ...
Si nous parlons beaucoup de JavaScript, avec la même fonction pour les appels plus d'un élément, une fonction différente appelle des méthodes différentes, etc. Je pense qu'il serait plus difficile pour soi-même à mélanger les approches inline et discret, et il serait préférable d'adopter l'une ou l'autre approche »
Merci; la référence à JavaScript discret est très utile; J'ai vu "jQuery in Action" recommandé avant et c'est sur ma liste de courses! Je vais lire les chapitres de l'échantillon. – Kristen
PS Les liens vers les exemples de chanters ont l'air corrects, mais n'ont pas fonctionné pour moi directement depuis cette page - mais ils sont disponibles sur ce site à cette page: http://www.manning.com/bibeault/ – Kristen
"même événement soulevé sur chacun d'un certain nombre d'éléments "pas de problème avec cela - Zebra Strips sur une table qui permettait de cliquer-column-heading pour Sort, par exemple. Ce que je suis aux prises avec le cas de ce bouton de soumission à une seule méthode. – Kristen