Quando I replaceWith
un elemento per portare uno dei DOM, quindi replaceWith
, gli eventi registrati non vengono attivati. Ho bisogno di eventi per rimanere intatto.Eventi che non si registrano dopo la sostituzioneCon
Ecco la mia Javascript:
var replacement = $(document.createElement('span'));
var original = $(this).replaceWith(replacement);
replacement
.css('background-color', 'green')
.text('replacement for ' + $(this).text())
.click(function() {
replacement.replaceWith(original);
});
Nella demo, quando si fa clic su un elemento, esso viene sostituito con un altro elemento utilizzando replaceWith
. Quando fai clic sul nuovo elemento, questo viene sostituito con l'elemento originale usando replaceWith
. Tuttavia, il gestore dei clic non funziona più (dove penserei che dovrebbe).
Hai finito per utilizzare il riattacco dell'evento o sei mai riuscito a far funzionare gli eventi dal vivo? Sto facendo la stessa identica cosa, e mi piacerebbe imparare dalla tua esperienza. –
@Erick T, mi dispiace, ma onestamente non ricordo. Ho fatto questa domanda quasi due anni fa. Penso che l'uso di '$ .fn.live' non ha funzionato perché avevo a che fare con elementi reali, non con un selettore. ('$ .fn.delegate' (che non esisteva allora) potrebbe funzionare come un'alternativa' live'.) A causa della risposta che ho selezionato, presumo di aver finito per riattaccare il gestore di eventi. Puoi provare a clonare in profondità anche l'elemento (quale IIRC può mantenere i gestori di eventi nell'ultima jQuery). – strager