Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    jquery 1.9.0 delegate() non funziona

    Ciao a tutti,

    stavo implementando delle funzionalità di paginazione / ricerca ajax e mi trovo davanti ad un problema: il metodo delegate non funziona.

    Ho una struttura html fatta in questo modo:
    codice:
    <table id="agency_list">
         <thead>.....</thead>
         <tbody>
              <tr>
                   
                   <td>Dettagli</td>
              </tr>
         </tbody>
    </table>
    Praticamente quando faccio una chiamata ajax rimpiazzo l'html dentro al tbody con
    $('#agency_list tbody').html(/*il mio nuovo html*/)

    Ho inoltre queste eventi per aprire la popup di dettaglio al click della anchor definiti con il delegate:
    codice:
    $('#agency_list tbody').delegate("tr td a.ag_detail", "click", function(e){
    		e.preventDefault();
    		
    		var idAgency = $(this).attr("href").substring(1, $(this).attr("href").length);
    		agencyViewModel.detail(idAgency);
    });
    Solo che non funzionano, nel senso che non entra nemmeno nell'evento se clicco sul link dopo aver aggiornato il tbody.
    Qualcuno sa dirmi dove sbaglio??

    Grazie mille a tutti!

  2. #2
    Da jQuery 1.7 in poi bisogna usare on()

  3. #3
    Grazie della risposta...proverò ad usare on().

    La cosa buffa è che in altre parti del sito lo stesso codice con il delegate funzione perfettamente....ad esempio
    codice:
    $('#policy_list').delegate(".detail_policy", "click", function(e){
    		e.preventDefault();
    		
    		var policyId = $(this).attr("href").substring(1, $(this).attr("href").length);
    		policyViewModel.detail(policyId);
    	});
    Questo codice è sulla stessa stregua dell'altro e funziona...boh

    Proverò domani con on(). Grazie mille intanto!

  4. #4
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    se hai incluso jquery 1.9 è impossibile che funzioni

    As of jQuery 1.7, .delegate() has been superseded by the .on()

    basta leggere http://api.jquery.com/delegate/

  5. #5
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    cmq hai invertito il selector con l'evento

  6. #6
    Ciao bstefano79.

    Guarda...dico che funziona perchè ho provato e riprovato sia in locale che su server
    E comunque con il delegate prima va il selettore e poi l'evento.

    Comunque ho provato anche con on() ma nulla.Il risultato è lo stesso. Se metto un breakpoint con firebug e faccio una chiamata ajax non si ferma al breakpoint.

    Il codice che ho usato è questo:
    codice:
    $('#agency_list').on("click", ".ag_detail", function(e){
    		e.preventDefault();
    		
    		var idAgency = $(this).attr("href").substring(1, $(this).attr("href").length);
    		agencyViewModel.detail(idAgency);
    	});
    Sono allibito

  7. #7
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    prova così

    codice:
    $('#agency_list').on("click", ".ag_detail", function(e){
    		e.preventDefault();
    		
    		var idAgency = $(this).attr("href").substring(1, $(this).attr("href").length);
    		agencyViewModel.detail(idAgency);
                    return false;
    	});
    ti ho aggiunto il return false per evitare il ricaricamento della pagina

  8. #8
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    Non bastava già preventDefault ?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.