Visualizzazione dei risultati da 1 a 6 su 6

Discussione: ajax e richiami

  1. #1

    ajax e richiami

    salve sto usando ajax con jquery,
    ricostruisco una parte di una pagina cambiando solo i valori all'interno della cella, ma classi, nomi identificativi, struttura è la stessa.
    Il problema è che però js, nonostante faccia una ricerca per classe o id, è come se mi avesse rindicizzato gli elementi della pagina con un altro nome, quini i compiti assegnati agli elementi della pagina nn valgono + una volta ricostruita, nonostante sia tutto come prima tranne i contenuti.
    In che modo posso risolverla senza dover riscrivere tutto per la pagina ricostruita?

  2. #2
    Scusa, ma non è molto chiaro:

    Il problema è che però js, nonostante faccia una ricerca per classe o id, è come se mi avesse rindicizzato gli elementi della pagina con un altro nome, quini i compiti assegnati agli elementi della pagina nn valgono + una volta ricostruita, nonostante sia tutto come prima tranne i contenuti.
    Intendi dire che gli elementi caricati con AJAX non hanno più gli eventi associati agli stessi? Beh, ma è ovvio perché NON sono gli elementi che avevi prima, JS tiene traccia degli elementi associandoci un ID interno, che viene cambiato se cambia l'Oggetto che rappresenta il codice (cioè, se cancelli un div con id="MyDiv", e facendo un var div = document.createElement('div'); div.id="MyDiv"; per HTML il nuovo div e quello precendente sono uguali, mentre per JS no che non lo sono)

    Se cambi gli elementi che hanno degli eventi devi anche reimpostarli.

  3. #3
    si questo lo avevo capito... ma non c'è un modo per far si che le cose assegnate al caricamento della pagina valgano anche per quella ricaricata con ajax senza stare li a ripetere tutte le istruzioni alla parte ricreata?

  4. #4
    tu chiedi un po troppo da JS... l'unico modo, a mio avviso, è metterli in HTML:

    cioè hai un div che se ci clicchi deve chiamare la funzione doIt(): devi far tornare dal server alle chiamate AJAX un html:

    <div onclick="doIt()">
    Contenuto
    </div>

    In questo modo gli eventi sono associati nel codice HTML, non nel codice JS. Ovviamente, la tipologia di assegnamento degli eventi DOM0 non è supportata allo stesso modo da tutti i browser, e potresti avere comportamenti strani...
    A dire il vero ti consiglio di rimetterci gli eventi con JS ogni volta...

  5. #5
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    c'e' anche un altro approccio al problema, cioe':
    non esistono gestori di eventi per elementi che possono aggiungersi/cambiare asincronicamente,
    esistono gestori di eventi a livello di documento

    se si parla di click si rileva il click sul documento e si risale a chi ha fatto scatenare l' evento,
    se l' elemento scatenante e' significativo si procede con quello che deve essere eseguito al click su quell' elemento

    e' un approccio discutibile a livello prestazionale, ma in situazioni fortemente dinamiche e' una soluzione accettabile

  6. #6
    va bhe ho capito ... la cosa è abbastanza sporca ma mi tocca riscrivere tutte le istruzioni dopo il richiamo ad ajax

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.