Convertire jquery in javascript

  • Autore discussione Autore discussione Mattia Campagna
  • Data d'inizio Data d'inizio
Pubblicità
M

Mattia Campagna

Ospite
Ho delle funzioni tipo questa in jQuery:
Codice:
	//	LOGICA DI SPOSTAMENTO PEDINE	$(".possible").live("click",function () {
		$('.casella').removeClass('possible');
		$('.casella').removeClass('mangiabile');
		$('.clicked div').appendTo(this); // Sposta la pedina da un div all'altro.
		$('.clicked').removeClass('occupato');
		$('.clicked').removeClass('clicked');
		$(this).addClass('occupato');
		nuovoTurno();
			if(Turno%2==1)
			{
				document.getElementById('info_game').innerHTML = "Tocca al Bianco";
			}
			else
			{
				document.getElementById('info_game').innerHTML = "Tocca al Nero";
			}
    });

C'è un modo indolore per portarle in javascript?
Se non erro jQuery è open quindi dovrei poter trovare le librerie che usa per eseguire quelle funzioni in javascript.
 
mh ok... ci sono ma per metà.
Per "tradurre" la porzione di codice che ho postato sopra devo farmi una funzione in javascript puro che mi sostituisca l'istruzione removeClass giusto?

Posso aiutarmi sbirciando la libreria del jquery che implementa removeClass in questo modo:
Codice:
removeClass: function( value ) {		var removes, className, elem, c, cl, i, l;


		if ( jQuery.isFunction( value ) ) {
			return this.each(function( j ) {
				jQuery( this ).removeClass( value.call(this, j, this.className) );
			});
		}
		if ( (value && typeof value === "string") || value === undefined ) {
			removes = ( value || "" ).split( core_rspace );


			for ( i = 0, l = this.length; i < l; i++ ) {
				elem = this[ i ];
				if ( elem.nodeType === 1 && elem.className ) {


					className = (" " + elem.className + " ").replace( rclass, " " );


					// loop over each item in the removal list
					for ( c = 0, cl = removes.length; c < cl; c++ ) {
						// Remove until there is nothing to remove,
						while ( className.indexOf(" " + removes[ c ] + " ") >= 0 ) {
							className = className.replace( " " + removes[ c ] + " " , " " );
						}
					}
					elem.className = value ? jQuery.trim( className ) : "";
				}
			}
		}


		return this;
	}

Dico bene? Non è semplice però... perchè nella libreria alcune funzioni richiamano a cascata anche altre quindi mi dovrei mettere a tradurre a ritroso mezzo mondo, o sbaglio? :skept:
 
Non è lontano dal javascript puro mi pare di vedere, il problema è nella selezione dei nodi, come tradurresti questo script?

Codice:
[COLOR=#333333]//	LOGICA DI SPOSTAMENTO PEDINE	$(".possible").live("click",function () {[/COLOR]
		$('.casella').removeClass('possible');		$('.casella').removeClass('mangiabile');		$('.clicked div').appendTo(this); // Sposta la pedina da un div all'altro.		$('.clicked').removeClass('occupato');		$('.clicked').removeClass('clicked');		$(this).addClass('occupato');		nuovoTurno();			if(Turno%2==1)			{				document.getElementById('info_game').innerHTML = "Tocca al Bianco";			}			else			{				document.getElementById('info_game').innerHTML = "Tocca al Nero";			} [COLOR=#333333]    });[/COLOR]

E' una parte dell'enorme "bestia" che sto realizzando per generare la dama in javascript.
Mi ha aiutato un mio amico programmatore che sa lavorare bene in jQuery, ora buona parte del codice è stato ben implementato ma devo convertirlo a javascript puro :skept:
 
Potevi fartelo fare direttamente i js...
Mi spiace, non conosco jQuery.
Mi sembra che $() funga da getElementById, per il resto ti affido alla documentazione (anche se è abbastanza leggibile).
 
Si, dalla documentazione funziona come il getElementById ba la cosa difficile da rendere è che in una unica istruzione ha concatenato quello con un rimuovi classe.
Inoltre in quel caso seleziona la classe, non l'id :)


- - - Updated - - -

Ecco ci sono. Devo selezionate tutti gli elementi con classe: casella ed eliminare a questi l'altra classe "possibile."
Come faccio a selezionare tutti gli elementi per classe ?
 
C'è getElementsByClassName().
Ti ricordo che jQuery è una libreria Js, ossia fa tutto quello che fa js ma in modo apparentemente più semplice. Molte delle volte si preferisce non usare librerie, perché rendono gli script in generale meno prestanti e la navigazione più lenta (lo vedi soprattutto se hai una connessione lenta).
 
Il punto è che il client deve scaricare tutta la libreria, non solo quello che il programmatore ha usato.
È molto difficile che ti venga concesso l'utilizzo di librerie semplificative. Questo vale per i linguaggi di programmazione in generale, ed è giusto che sai così.
 
Ultima modifica:
Pubblicità
Pubblicità
Indietro
Top