Comment supprimer un élément ajouté à Jquery et pourquoi lier ou vivre provoque la répétition d'éléments
Maintenant, je sais que cette question fondamentale a été posée, mais je dois avoir fait quelque chose de mal. Je sais que en annexe un élément lié avant que je ne peux rien faire pour elle. Cependant, essayez comme je pourrais, je ne peux pas le faire fonctionner.
Je suis en tirant dans un message et l'affichage quand les gens cliquent sur une radio sélectionnez. Lorsque j'ai jamais essayer de lier l'élément nouveau, c'piles d'une manière étrange. Il va commencer à empiler les éléments. eg- [Cliquez 1]message 1, [Cliquez 2] message 1 et 2, et ainsi de suite.
J'ai essayé tout un tas de façons différentes de les lier. Mon espoir était de le supprimer serait strip #commentaires et ensuite de créer et de lier le message suivant. Je dois faire quelque chose de terriblement mal. Je sais que c'est très similaire à d'autres posts, mais je suis passé par tous et qui n'a pas été en mesure de trouver une réponse assez claire à l'aide. Je vous remercie à l'avance.
Le code HTML
<div class="answers">
<ul>
<li>
<input id="answer" type="radio" onclick="feedback('THE MESSAGE HTML')"><label>Label</label>
</li>
</ul>
</div>
JavaScript:
function feedback(message)
{
$('#answer').live('click', function()
{
$('#feedback').remove();
});
$('#answer').live('click', function()
{
$('.answers').append('<div id="feedback">'+message+'</div>');
});
};
source d'informationauteur user1197728
Vous devez vous connecter pour publier un commentaire.
Si je comprends votre question correctement, j'ai fait un violon qui a ce qu'il fonctionne correctement. Ce problème est avec la façon dont vous assignez les gestionnaires d'événements et comme d'autres l'ont dit, vous avez plus de circonscription des gestionnaires d'événements. L'actuel jQuery meilleure pratique consiste à utiliser
on()
pour enregistrer les gestionnaires d'événements. Voici un lien vers le jQuery docs suron
: lienVotre solution originale était assez proche mais la façon dont vous avez ajouté les gestionnaires d'événements est un peu déroutant. Il est considéré comme la meilleure pratique pour ne pas ajouter des événements à des éléments HTML. Je vous recommande la lecture sur JavaScript non-intrusif.
Voici le code JavaScript. J'ai ajouté une variable de compteur de sorte que vous pouvez voir qu'il fonctionne correctement.
La
live
fonction est l'enregistrement d'un gestionnaire d'événements click. Il va le faire à chaque fois que vous cliquez sur l'objet. Donc, si vous cliquez deux fois, vous êtes à l'attribution de deux gestionnaires de clic à l'objet. Vous êtes également l'affectation d'un gestionnaire de clic ici:Et puis cliquez sur gestionnaire est d'attribuer un autre gestionnaire de clic via
live()
.Vraiment ce que je pense que vous voulez faire, c'est ceci:
Ok, par votre commentaire, essayez de prendre la
onclick
partie de la<a>
élément et au lieu de cela, mettre ceci dans undocument.ready()
gestionnaire.Avez-vous plusieurs Boutons sur la page..
Parce que ce que je vois, c'est que vous attribuez les événements de tous les bouton radio sur la page lorsque vous cliquez sur un bouton radio
Je ferais quelque chose comme: