• User Newbie

    Comportamento anomalo funzione jquery su Safari

    Ho un caso anomalo che mi tormenta da qualche giorno.

    Ho una parte di un form che viene generato lato client. Praticamente ho una serie di select che vengono, letteralmente, create da zero con delle funzioni jquery.
    All'evento "change" di alcune select, vengono creati altri campi input.

    Il DOM quindi all'inizio è praticamente vuoto.
    Per fare in modo di accedere ai valori delle select create automaticamente, inserisco il mio codice all'interno della funzione jquery

    
    $(document).on('mouseup', 'body', function() {
    $('#idscelto').change(function() {
    // codice qui
    });
    });
    
    

    L'evento change viene catturato correttamente da tutti i browser fatta eccezione per Crome.
    Il quale il primo change di qualsiasi select creata dinamicamente, non viene catturato e quindi non parte la funzione associata. La successiva viene recepita correttamente e da quel momento tutto funziona correttamente.

    non riesco ad uscirne e purtroppo non ho la possibilità di usare un mac per avere la console di safari.

    help me


  • User Newbie

    @nichi said:

    L'evento change viene catturato correttamente da tutti i browser fatta eccezione per Crome.

    Intendevo dire Safari, scusate


  • User Newbie

    ho risolto sostituendo l'evento change con l'evento click, ora anche Safari si comporta bene.
    Ma mi rimane il dubbio sull'inutile spreco di risorse. Sicuramente controllare ogni evento click è diverso che controllare solo il change di una select.

    Proprio nessuno si è imbattuto in un caso simile?


  • User

    Ciao, mi sembra che la logica del codice non sia corretta. In quel modo tu riassegni un evento ad un elemento, ad ogni click.

    Basterebbe

    
    $(function(){
    $("#el").on("change",function(){
    
    });
    });
    
    

    Poi non so come sia strutturato il tuo codice, ma in generale funziona così 🙂


  • User Newbie

    il tuo esempio è esattamente la soluzione corretta e che anche io applico.

    Il problema si è presentato solo con Safari. Non so per quale assurdo motivo, ho provato anche in versioni differenti.

    Unico indizio è rivolto al nodo sulla quale applico il controllo change. Nel tuo esempio all'elemento #el
    Nel mio caso il nodo è creato dinamicamente da javascript, quindi non presente all'inizio del caricamento della pagina.

    Grazie per il supporto, se hai altri suggerimen