- Home
- Categorie
- Coding e Sistemistica
- Javascript & Framework
- Comportamento anomalo funzione jquery su Safari
-
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
-
@nichi said:
L'evento change viene catturato correttamente da tutti i browser fatta eccezione per Crome.
Intendevo dire Safari, scusate
-
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?
-
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ì
-
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