Newsgroup: it.comp.lang.javascript
Titolo: Aiuto per la sintassi

Nella stessa pagina ho 2 gallerie di immagini che richiamo con queste 2 
funzioni.
 
     <script type="text/javascript">
     $(function() {
         $('#gallery1 a').lightBox();
     });
 
     $(function() {
         $('#gallery2 a').lightBox();
     });
     </script>
 
 
Ma se di gallerie diverse ne ho per esempio 10, come posso fare a 
scrivere con un unico loop i richiami alle 10 diverse gallerie?
 
Quello che segue ï¿œ uno dei miei tentativi falliti:
<script type="text/javascript">
for(z=1;z<11;z++)
{
document.write($(function() {$('#gallery'+z+' a').lightBox();}))
}
</script>
 
Grazie a chi potrï¿œ darmi una mano.
Leonardo
 
 
-- 
Non sono su facebook
Se anche tu vuoi cancellarti
http://www.giardiniblog.com/come-cancellarsi-da-facebook-eliminare-account/
 

 </script>
 
perché document.write e non direttamente nella function?
 
(intendo:
for ...
   $("#gallery"+z+" ................
)


prova già fatta, non funziona.
Poiché la pagina è dinamica MySQL/PHP nel frattempo ho risolto così:
 
Quantità funzioni necessarie da righe della query:
$QuantitaRecord = mysql_num_rows($result);
 
<?php // crea le funzioni che inizializzano le gallerie
$NN = 1;
for($NN=1;$NN<$QuantitaRecord+1;$NN++)
{
echo" <script type='text/javascript'> ";
echo" $(function() { ";
echo" $('#gallery$NN a').lightBox(); ";
echo" }); ";
echo" </script> ";
}
?>
Per chi può interessare........
Saluti


 for($NN=1;$NN<$QuantitaRecord+1;$NN++)
 
Visto che hai il "max" in una variabile PHP, puoi fare
 
<script>
$(function() {
  for (var z=0; z<=<?php echo $QuantitaRecord;?>; z++) {
    $('#gallery' + z).lightBox();
});
</script>
 
Ma fa comunque schifo.
 
Il modo corretto è generare l'html delle gallery dandogli un class:
 
<div id="gallery1" class="js-gallery"> ... </div>
 
<script>
 $(function() {
  $('.js-gallery').lightBox();
 });
</script>
 
I plugin jQuery sono (al 99%) consapevoli di operare su uno o più 
risultati della query.
 
 
In generale:
 
1- EVITA assolutamente gli ID, a meno di non avere una pistola alla tempia
 
2- usa un prefisso (nel caso sopra: "js-") nelle class che devono fare da 
agganci per funzionalità in javascript. E ricordati di NON usare quelle 
classi nei css, naturalmente.
 
Bye.


Come sempre sei fantastico.
Ho sempre da imparare dei tuoi script, lo dico seriamente.
Ti ringrazio


 1- EVITA assolutamente gli ID, a meno di non avere una pistola alla tempia
 
Perché? Non mi interessa per questo caso specifico ma per uno simile.
 
 


Finché fai la paginetta singola e/o piccola, non sono un problema.
 
Quando inizi a modularizzare le pagine, e a includere pezzi di qua o di 
là, o a usare sistemi di templating, prima o poi ti capita di usare lo 
stesso id due o più volte nella stessa pagina, e a quel punto inizi a 
trovarti errori che non hai idea del perché succedano e impossibili da 
debuggare.
 
So che il primo pensiero è "ma questo sito non crescerà mai più di così", 
ma, per esperienza personale, non succede quasi mai. I siti crescono 
sempre. :)
 
Bye.

 Finché fai la paginetta singola e/o piccola, non sono un problema.
 
Premesso che non faccio piú siti da una vita e mezzo, non sono
totalmente d'accordo.
 
L'ID ha il suo senso di esistere – ed è comunque tutt'ora il modo piú
performante per accedere velocemente a un elemento -; concordo che in un
sistema di templating in cui si autogenerano elementi, di norma – e
sottolineo di norma, giacché esistono eccezioni – per tali elementi non
dovrebbe essere usato, si finirebbe per autogenerare anche quello, e
sarebbe un indicatore che si sta facendo qualcosa di sbagliato – sempre
di norma.
 
Come dicevo, di eccezioni alla suddetta regolina generale ce ne sono,
basta ad esempio vedere il sorgente di Twitter. Oppure in certi casi di
FRP e/o su processi / sandbox separati (vedasi Firefox), dove non puoi
passare direttamente il riferimento al nodo, ma deve essere un handle
serializzabile.