Visualizzazione dei risultati da 1 a 3 su 3

Discussione: iterazione jQuery

  1. #1

    iterazione jQuery

    un saluto a tutti,

    ragazzi avrei bisogno di un aiuto... vi spiego il problema.

    tramite uno script in jQ dovrei assegnare ad ogni immagine di una certa classe presente in un pagina, un semplice link (diverso per ogni immagine)

    nell' html ho questo

    codice:
    [img]image01.jpg[/img] 
    [img]image02.jpg[/img]
    tramite lo script dovrei tirare fuori questo
    codice:
    <a href='big_image01.jpg' class = 'pippo' >  
          [img]image01.jpg[/img]
    </a>
    
    <a href='big_image02.jpg' class = 'pippo' > 
          [img]image02.jpg[/img]
    </a>
    e lo script che sto utilizzando
    codice:
    <script type="text/JavaScript"> 
       $(document).ready(function(){
    	$( "img.myclass" ).each(function(){
                  
                 var attr = $(this).attr('src');
                 $('img.myclass').replaceWith('[img]'+attr+'[/img]');
    			
    	});
      });
     </script>
    con questo script riesco a linkare l'immagine, ma il problema è che tuttle le immagini mi vengono sostituite con la prima, e linkate sempre allo stesso link.

    sono molto niubbo di js, ma credo che il problema sia nella funzione .each() ....non credo di aver capito bene come utilizzarla e se sia adatta a questo scopo.
    sono giorni che cerco una soluzione ma non riesco ad uscirne....



    PS: ma non c'è un modo più elegante per linkare un'immagine? sono giorni che cerco e non ho trovato un metodo migliore del .replaceWith()...
    con .link() si possono linkare solo dei testi

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    Codice PHP:
    $("img .myclass").each(
        function(){
            $(
    this).wrapInner("[url='"+$(this).attr("src")+"'][/url]");
        }

    Anche il tuo script sarebbe corretto se non fosse per il fatto che il replace lo fai su tutte le immagini

    $("img .myclass").replaceWith...

    dovrebbe essere

    $(this).replaceWith

    Poichè i selettori in jquery, fanno riferimento a tutti gli elementi che matchano con essi, quindi è come se facessi la replace with a tutti gli elementi in un solo colpo. Invece con this prendi solo l'elemento dell'iterazione attuale.

    Comunque mi sembra che wrapInner sia più elegante e ti evita di dover riscrivere ciò che sostituisci.

  3. #3
    ero sicuro di esserci vicino ma non credevo così tanto!!

    grazie mille longilineo, mi hai risparmiato un altro mal di testa ( )

    buona giornata!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.