Ho appena iniziato a guardare JQuery. Al momento non ho alcun AJAX nella mia applicazione web.JQuery: Perché la funzione di JavaScript/Document Ready non invadente piuttosto che l'evento OnClick?
mio JavaScript esistente nel mio HTML assomiglia:
<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>
Questo visualizza i pulsanti per [Aggiungi] e [Trova]. Per Trova è necessario inviare il modulo e io utilizzo MyFormSubmit() che convalida i dati, aggiunge un effetto visivo alla pagina e quindi esegue il POST dei dati.
potrei aggiungere una classe o un ID per il per il pulsante Trova e JQuery potrei scrivere qualcosa di simile:
$(function() {
$(".MySearchButtonClass").click(function() {
// validate and process form here
});
});
Alla mia fase "novizio" di intesa con JQuery non ottengo perché lo farei in questo modo
Il mio vecchio modo identifica il metodo vicino all'oggetto. Potrebbe esserci il rischio che il JS non sia caricato prima che l'utente preme il pulsante (è lì? Il LOAD per il JS è proprio nella parte superiore della pagina).
Il metodo JQuery Document Ready non verrà attivato fino a quando il documento non viene caricato (che presumo garantisce che il JS sia tutto presente e pronto per essere eseguito?), Ma sposta il codice in una parte separata del mio HTML file - così quando vedo il DIV MyButtonArray nel sorgente HTML non è ovvio per me quali oggetti hanno metodi e quali no.
Potete per favore aiutarmi a capire quali sono le mie opzioni e i vantaggi/trucchi che dovrei cercare?
Edit: Sto bene che la manipolazione del DOM - come ad esempio un LightBox che può apparire quando si fa clic su una miniatura con classe "LightBoxThumb" - avrebbe utilizzato JavaScript discreto.
Tuttavia, sto lottando per convincermi che un pulsante con un'azione specifica debba avere il suo metodo applicato in quel modo. (Di certo non inserisco alcun codice sul pulsante se non una singola chiamata a qualcosa "altrove", ma a mio avviso è il mio miglior indizio su cosa faccia quel pulsante, e i livelli di Javascript non invadente potrebbero rendere molto più difficile per determinare)
Edit2 -. risposta accettata
ho preso Russ erotiche risposta. Descrive JavaScript non intrusivo in un modo che mi è stato utile per capire di più su come & quando dovrebbe essere usato.
Per il momento (potrebbe cambiare quando avrò più esperienza!) Attaccherò con un evento OnClick per un'azione singola, non mutevole, su un oggetto poiché ritengo che sia più facile per me eseguire il debug - e diagnosticare se sorgono problemi. Per ZebraStripes su una tabella che permette di cliccare sulla rubrica colonna per ordinare (e le situazioni di quel tipo) posso vedere i vantaggi dell'approccio JavaScript discreto
commento finale di Russ è stato particolarmente utile, ripetuto qui:
"@Kristen - Hai ragione, come molto di argomenti di programmazione, c'è più di un approccio e la gente sarà sostenuta con veemenza dalle loro convinzioni!Se stiamo parlando di un singolo metodo per un singolo pulsante, ho completamente capire dove stai venendo da ...
Se stiamo parlando di un sacco di JavaScript, con la stessa funzione chiamate per più di un elemento, funzione differente richiede metodi diversi, ecc penso che sarebbe più difficile per se stessi per mescolare in linea e discreti approcci, e sarebbe meglio adottare uno o l'altro approccio"
Grazie; il riferimento a JavaScript non intrusivo è molto utile; Ho visto "jQuery in Action" consigliato prima e nella mia lista della spesa! Avrò una lettura dei capitoli di esempio. – Kristen
PS I link ai canali di esempio sembrano corretti, ma non hanno funzionato direttamente da questa pagina, ma sono disponibili su quel sito in questa pagina: http://www.manning.com/bibeault/ – Kristen
"stesso evento generato su ciascuno di un certo numero di elementi "nessun problema con quello - Zebra Strips su una tabella che consentiva l'intestazione click-column per Sort, ad esempio. Quello che sto combattendo con il caso di questo pulsante di invio metodo singolo. – Kristen