Newsgroup: it.comp.lang.javascript
Titolo: su quale elemento è stato fatto click? CORREZIONE

Ho questa classe
<div class="RQ"></div><div class="RQ"></div><div class="RQ"></div><div 
class="RQ"></div><div class="RQ"></div><div class="RQ"></div>
 
e quando un utente fa click su uno di loro lo intercetto con questo:
 
$(".RQ").click(function(){$(this).fadeTo("fast", 0.75);});
 
eseguendo il fadeTo.
 
Ma se io voglio anche sapere su quale dei sei ï¿œ stato fatto click, (per 
esempio ricevendo/leggendo un valore da 1 a 6) come faccio? E' possibile?
Grazie a chi mi puï¿œ dare una mano
Leonardo
 
 
-- 
Non sono su facebook
Se anche tu vuoi cancellarti
http://www.giardiniblog.com/come-cancellarsi-da-facebook-eliminare-account/
 

 esempio ricevendo/leggendo un valore da 1 a 6) come faccio? E' possibile?
 
Vuoi sapere l'indice della collezione? A che pro? Ne ï¿œ stato discusso
recentemente proprio sul NG, puoi usare il metodo `index` di jQuery,
comunque di norma non hai mai bisogno di una cosa del genere; se ti
riferisci a questo genere di ordinamento, da esperienza personale, c'ï¿œ
qualcosa di sbagliato nella logica, e solitamente puoi raggiungere lo
stesso scopo in modo migliore.
 
Quindi, una volta risposto alla domanda (usa il metodo `index` di
jQuery), a cosa ti serve sapere l'ordinamento? Qual ï¿œ, lo scopo finale
che ti prefiggi?
 


Ruotando da 0 a 5, ognuno dei 6 div cambia lo sfondo, per esempio 
diventa nero, mentre li altri diventa rosso (ma il tipo di colore ï¿œ 
irrilevante, solo che 1 ï¿œ sempre nero e gli altri rossi).
Mentre il colore nero dello sfondo passa dal primo al sesto, sul monitor 
cambia un immagine.
A div 0 nero, corrisponde immagine 0, a div 1 nero, immagine 1 e cosï¿œ 
via. Ciclando all'infinito.
Quando l'utente fa click su di un div (anche se non ï¿œ quello in nero), 
diventa nero quel div e l'immagine corrispondente a quel div va sul monitor.
In un primo tempo pensavo di assegnare un id a ciascuna div della classe 
RQ (id0, id1 ecc.  <div id="id0" class="RQ"><div id="id1" class="RQ">) 
di modo che al click per il this leggo id corrispondente e cambio 
l'immagine, ma non mi sembra il migliore modo di farlo.
Tu che mi consigli?
Saluti


 Tu che mi consigli?
 
Se mi aiuti a capire meglio il contesto, posso provare a darti una mano;
soprattutto la relazione tra le varie cose. In base poi anche a dove
devi specificare le immagini, puoi usare una classe CSS, piuttosto che
un attributo `data`, etc.
 


 
i 6 DIV possono essere letti con each da 0 a 5, le 6 immagini sono 
0.jpg, 1,jpg ecc.
Quindi sono in quest'ordine.
 
Questo array contiene le immagini:
Immagine = new Array()
Immagine[0] = "0.jpg";Immagine[1] = "1.jpg";Immagine[2] = "2.jpg";
Immagine[3] = "3.jpg"; Immagine[4] = "4.jpg";Immagine[5] = "5.jpg";
quando un div diventa nero, nel div contenitore di immagini metto
quella corrispondente al div nero:
all'avvio ï¿œ questa:
<img id="ImmaginePiccola" src="0.jpg">
la sostituieco cosï¿œ:
$("#ImmaginePiccola").attr("src", Immagine[I]);
dove I ï¿œ la variabile che contiene il valore da 0 a 5.
Varia ogni 5 secondi con setInterval.
spero di essermi spiegato


 Varia ogni 5 secondi con setInterval.
 
Avevo capito che era in base al click utente. Comunque sia rimane il
discorso di cui sopra, nel peggior dei casi utilizzerei un data
attribute, e un `id` e/o una variabile d'appoggio per identificare
l'elemento corrente. Qualcosa tipo, appunto:
 
    <ul class="recipes">
        <li id="recipe-selected"
data-preview="risotto-porcini.jpg">Risotto ai Porcini</li>
        <li data-preview="tiramisu.jpg">Tiramisú</li>
        <!-- etc -->
    </ul>
 
 
In questo modo puoi avere un interval siffatto:
 
    setInterval(function() {
      var selected = document.getElementById('recipe-selected');
      var next = selected.nextElementSibling ||
selected.parentElement.firstElementChild;
 
 
selected.id
 = '';
 
next.id
 = 'recipe-selected';
 
      var preview = next.getAttribute('data-preview');
      // do something with `preview`
    }, 5000);
 
Ovviamente il browser deve supportare `nextElementSibling` e
`firstElementChild`, nel caso tu utilizzassi browser vetusti questo non
è scontato, in ogni caso sono sicuro che jQuery può aiutarti in merito,
io ho scritto del codice JS puro e semplice.
 
Considera due cose: la prima, grazie all'id potresti anche fare tutto
tramite CSS, se la struttura te lo permette, e non hai bisogno quindi di
data attribute di sorta, ma potresti già usare elementi o classi CSS per
le immagini.
La seconda, che questo funziona meglio di un indice, perché non si basa
su alcuna relazione di ordinamento, inoltre se tu "cliccassi" su un
immagine, sballeresti l'interval – e con l'indice è anche peggio –, qui
ti basta che nel click rimuovi l'id dall'elemento corrente e lo associ a
quello cliccato – devi ovviamente disabilitare l'interval, in quel caso,
sennò continua. Non so bene la tua usability perché non la spiegata,
difatti io pensavo fosse solo tramite click.
 

 Leonardo
 
Fai in modo che ogni div abbia un id, come qui:
 
<div class="RQ" id="0"></div><div class="RQ" id="1"></div><div class="RQ" 
id="2"></div><div
class="RQ" id="3"></div><div class="RQ" id="4"></div><div class="RQ" 
id="5"></div>
 
A quel punto l'id lo ottieni leggendo 
this.id
 
-- 
"Un pasto senza vino e' come un giorno senza sole"
Anthelme Brillat Savarin 
 
 


Ti ringrazio, vedrò se ci arrivo.



Ti ringrazio, ma lo sapevo giï¿œ, era proprio quello che volevo evitare.
In altre parole se un utente clicca sul numero 3 (senza che ci sia 
id="3"), posso intercettare/sapere in qualche modo se ha fatto click sul 
numero 3?
Facendola (forse) piï¿œ semplice, se al click, al div 3 cambio colore di 
fondo, come faccio a scorrere la classe e trovare quello col fondo nero?
Non ï¿œ che non conosca each ma non mi funziona, legge sempre il colore 
precedente.
Saluti


 precedente.
 
Non ho ben capito cosa intendi per "scorrere la classe", ma come ti ho
mostrato nel mio codice puoi tranquillamente prendere il div successivo
partendo dall'elemento corrente.