Visualizzazione risultati 1 fino 8 di 8

Discussione: Prepend in ciclo each

  1. #1
    Guest

    Predefinito Prepend in ciclo each

    Ciao a tutti,

    vengo subito al dunque.
    Vorrei, in un form fare inserire subito prima (o anche subito dopo) ogni SELECT un campo nascosto.

    Ho provato ad usare il seguente codice

    Codice:
    var $sel = $('select');
    $sel.each(function() {
    var $name = this.name;
    var $id = this.id;
    
    this.prepend("<input type=\"hidden\" name=\"h_" + $name + \" id=\"h_" + $id + "\" size=\"20\" />");
    
    });
    Il fatto è che così facendo ho solo l'errore che mi avvisa che prepend (o append) non è una funzione definita.

    Se provo con $(this).prepend non va!

    Lo so, lo so non conosco bene (anzi lo conosco poco) jquery ma non ne vengo a capo.

    Grazie

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Stai scrivendo php o javascript? Se è javascript, non dovrebbero esserci i $, se invece è php, non c'è jquery.

    Se è javascript, hai una pagina di esempio del problema online?

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    Stai scrivendo php o javascript? Se è javascript, non dovrebbero esserci i $, se invece è php, non c'è jquery.

    Se è javascript, hai una pagina di esempio del problema online?
    1. Se ti dico che il problema è con jQuery perchè tiri in ballo PHP?
    2. Fosse stato PHP avrei postato nella sezione apposita non credi?
    3. La sintassi proposta non mi pare sia propria di PHP. each in PHP si riferisce agli array e si usa in maniera diversa così come il cilco foreach.
    4. Prepend e append in PHP non esistono. O sbaglio?
    5. Il fatto di usare $ è solo per una abitudine mia personale non mi pare ci siano problemi a chiamare una variabile $pippo anzichè pippo in JS, o no?
    Ultima modifica di simpleticket : 08-11-2010 alle ore 23.24.26

  4. #4
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Citazione Originalmente inviato da simpleticket Visualizza messaggio
    1. Se ti dico che il problema è con jQuery perchè tiri in ballo PHP?
    2. Fosse stato PHP avrei postato nella sezione apposita non credi?
    3. La sintassi proposta non mi pare sia propria di PHP. each in PHP si riferisce agli array e si usa in maniera diversa così come il cilco foreach.
    4. Prepend e append in PHP non esistono. O sbaglio?
    5. Il fatto di usare $ è solo per una abitudine mia personale non mi pare ci siano problemi a chiamare una variabile $pippo anzichè pippo in JS, o no?
    Non scaldarti, capita spesso di trovare nel forum un utente che fa molta confusione e se si legge distrattamente un messaggio capita spesso di non comprendere il livello di chi scrive, non dovresti prendertela così con chi solo cercava di aiutarti.

    Comunque c'è un errore di sintassi nel codice che hai scritto: hai inserito un backslash di troppo dopo +$name+. Se vuoi usare il metodo prepend, devi chiamarlo sull'oggetto $(this).
    P.s.: comunque non vedo perché scomodare JQuery per un compito così semplice quando puoi usare il semplice DOM.
    Ultima modifica di karl94 : 09-11-2010 alle ore 00.40.11

  5. #5
    Guest

    Predefinito

    Frequento i forum da un po' e conosco il tipo di richieste cui ti riferisci.

    Il rispondere a quel modo però, soprattutto se viene da un moderatore, permettimi, indispone.
    Nulla contro chi viene qui a chiedere o dare aiuto. Se non riesco a fare una cosa chiedo se so rispondere ad una richiesta lo faccio.

    Riguardo lo scomodare jQuery, la richiesta viene fuori da un progetto più ampio in cui viene usato jQuery assieme ad alcuni plugin e UI. Quindi visto che c'è perchè non usarlo anche semplicemente per semplicità di scrittura?

    Ho preparato una paginetta visibile in qui.

    Il codice usato è

    Codice:
    $('#btn1').click(function){
    var $sel = $('select');
    $sel.each(function() {
    var $name = this.name;
    var $id = this.id;
    $(this).prepend("<input type=\"text\" name=\"h_" + $name + "\" id=\"h_" + $id + "\" size=\"20\" />");
    });
    });
    (Ho usato un campo di tipo text per comodità)

    Così ottengo che ad ogni chiamata il campo venga aggiunto prima delle OPTION invece che della select come voluto.

  6. #6
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Citazione Originalmente inviato da simpleticket Visualizza messaggio
    Il rispondere a quel modo però, soprattutto se viene da un moderatore, permettimi, indispone.
    Nah, ti sei indisposto tutto da solo Il tono non era aggressivo, ho cercato di accertarmi del contesto, e poi ho chiesto un esempio nel caso che sembrava più probabile. E mi ritrovo come risposta una bella lista numerata ed inviperita, gg

    Tornando al problema, la documentazione di prepend dice
    Insert content, specified by the parameter, to the beginning of each element in the set of matched elements.
    Enfasi mia su "to the beginning" —non dice "before"— l'elemento che gli passi viene aggiunto come figlio del nodo in questione, prima del firstChild. Se vuoi aggiungere un "fratello" del nodo, che lo preceda, devi usare .before().
    Ultima modifica di dreadnaut : 09-11-2010 alle ore 01.49.44

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    Nah, ti sei indisposto tutto da solo Il tono non era aggressivo, ho cercato di accertarmi del contesto, e poi ho chiesto un esempio nel caso che sembrava più probabile. E mi ritrovo come risposta una bella lista numerata ed inviperita, gg
    Spero che sia tutto chiarito e ti chiedo scusa.

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    Tornando al problema, la documentazione di prepend dice

    Enfasi mia su "to the beginning" —non dice "before"— l'elemento che gli passi viene aggiunto come figlio del nodo in questione, prima del firstChild. Se vuoi aggiungere un "fratello" del nodo, che lo preceda, devi usare .before().
    Risolto. Grazie

  8. #8
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Citazione Originalmente inviato da simpleticket Visualizza messaggio
    Spero che sia tutto chiarito e ti chiedo scusa.
    Di niente! Purtroppo il tono del testo non appare sempre come vorremmo

    Ma ho scoperto che si può mettere un $ nei nomi di variabili in javascript, stranezze

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •