2013-03-22 30 views
8

Ho un problema con jquery 1.9.1. L'ho cercato ma questi non sono stati risolti il ​​mio problema.

$('.sm2_expander').live('click', function() { 
    $(this).parent().parent().toggleClass('sm2_liOpen').toggleClass('sm2_liClosed'); 
    return false; 
}); 

Ognuno ha detto che "usa" su "funzione" ma questa volta il mio codice non funziona mai.

$(document).on("click", "a.offsite", function(){ alert("Goodbye!"); }); 

Edit: Ecco la mia pagina prject utilizzando: draggable link

+2

La versione 'on' di' $ (". Sm2_expander"). Live ("click", func) 'è' $ (document) .on ("click", ". Sm2_expander", func) '. Non so dove hai "" a.offsite "'. –

+2

puoi condividere l'html anche –

+0

bisogno di maggiori informazioni. Probabilmente usa http://jsfiddle.net per spiegare il problema. – prasann

risposta

14

Nel tuo esempio è stato utilizzato il selettore a.offsite ma ci non ci sono elementi che corrispondono a questo selettore in te pagina. Questo potrebbe essere il motivo per cui non funziona.

$(function(){ 
    $(document).on('click', '.sm2_expander', function(){ 
     alert('bye'); 
     $(this).parent().parent().toggleClass('sm2_liOpen').toggleClass('sm2_liClosed'); 
    }) 
}) 

Penso che si può ridurre questo per

$(function(){ 
    $(document).on('click', '.sm2_expander', function(){ 
     $(this).closest('li').toggleClass('sm2_liOpen sm2_liClosed'); 
    }) 
}) 
+0

Grazie. Questa è la mia soluzione. –

2

provare a sostituire live con on nel codice.

$('.sm2_expander').on('click', function() { 
    $(this).parent().parent().toggleClass('sm2_liOpen').toggleClass('sm2_liClosed'); 
    return false; 
}); 
+0

Grazie per la risposta, ma non funziona. La pagina di esempio è: http: // boagworld.com/demo/sitemap/ –

6

Prova questo fuori: -http://jsfiddle.net/trdb9/

JS: -

$(document).on("click", "a.offsite", function() { 
    alert("Goodbye!"); 
}); 

HTML: -

<a class="offsite">Click Me</a> 
+0

Grazie per la risposta, ma non funziona. La pagina di esempio è: boagworld.com/demos/sitemap –

+0

Il tuo sito demo utilizza la versione 1.3 di jQuery –

+0

Grazie Brother Il tuo codice funziona per me – sachinM

3

È necessario utilizzare jquery-migrate-1.1.1.min.js o superiore. Immagino che ci siano grandi cambiamenti in arrivo su jquery, uno dei quali sta facendo sì che tutti coloro che hanno fatto affidamento su .live trovino nuovi modi.

In ogni caso, provalo e dovrebbe funzionare.

7

.live() è stato introdotto in jQuery 1.3, pertanto non funzionerà con le versioni precedenti.

.live() è stato inoltre deprecato in jQuery 1.7 in poi.

Le alternative sono .On() e .delegate()

Vedi relativa domanda jQuery 1.9 .Live() non è una funzione su come migrare il codice esistente.

Ho usato "jquery-1.8.3.min.js" e il mio problema risolto.

Problemi correlati