Les événements à ne pas l'enregistrement après remplaceavec
Quand je replaceWith
un élément à apporter, l'une des DOM, puis replaceWith
il en, événements enregistrés pour elle de ne pas le feu. J'ai besoin des événements de rester intact.
Voici mon code 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);
});
Dans la démo, lorsque vous cliquez sur un élément, il est remplacé par un autre élément à l'aide de replaceWith
. Lorsque vous cliquez sur l'élément nouveau, qui est remplacé par l'élément d'origine à l'aide de replaceWith
. Toutefois, le gestionnaire de clic ne fonctionne plus (d'où je pense qu'elle devrait).
- Vous êtes-vous retrouvée à l'aide de l'événement de rattachement, ou avez-vous été en mesure d'obtenir en Direct les événements de travailler? Je suis en train de faire exactement la même chose, et aimerait apprendre de votre expérience.
- T, je suis désolé, mais honnêtement, je ne me souviens. J'ai posé cette question il y a deux ans. Je pense que l'utilisation
$.fn.live
n'a pas fonctionné parce que j'ai été traiter avec des éléments réels, et non pas d'un sélecteur. ($.fn.delegate
(qui n'existait pas à l'époque) peut travailler pour vous comme unlive
alternative.) En raison de la réponse que j'ai choisie, je suppose que j'ai fini de re-joindre le gestionnaire d'événements. Vous pouvez essayer de profondeur le clonage de l'élément (ce qui IIRC peut garder des gestionnaires d'événements dans la dernière jQuery).
Vous devez vous connecter pour publier un commentaire.
Parce que lorsque vous remplacez l'élément d'origine, les événements liés sont supprimés. Vous aurez besoin de re-joindre la
click
gestionnaire d'événement suroriginal
après l'appel àreplacement.replaceWith(original)
:Mise à JOUR:
live()
etbind()
ont été dépréciées, en faveur desur()
.Vous pouvez utiliser live() et bind() événements, c'est votre nouveau code:
-Live fonctionne avec jQuery 1.3 et supérieure.
-si vous voulez arrêter le live de propagation de l'utilisation die() fonction.
les événements en direct sont ce que vous cherchez