如何使用Jquery删除附加元素以及为什么绑定或生存会导致元素重复

use*_*728 11 jquery bind append live

现在我知道这个基本问题之前已被问过,但我一定做错了.我知道在我可以对它做任何事情之前必须绑定一个附加元素.但是,尝试我可能无法让它工作.

当我们点击收音机选择时,我正在显示一条消息并显示.当我尝试绑定新元素时,它会以奇怪的方式堆叠.它将开始堆叠元素.例如 - [单击1]消息1,[单击2]消息1和2,依此类推.

我尝试了一大堆不同的方法来绑定它.我希望删除会删除#feedback,然后创建并绑定下一条消息.我必须做一些非常错误的事情.我知道这与其他帖子非常相似,但我经历了所有这些帖子并且无法找到足够明确的答案来帮助.先感谢您.

HTML

<div class="answers">
    <ul>
        <li>
            <input id="answer" type="radio" onclick="feedback('THE MESSAGE HTML')"><label>Label</label>
        </li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

function feedback(message)
{
    $('#answer').live('click', function()
    {
        $('#feedback').remove();
    });

    $('#answer').live('click', function()
    {
        $('.answers').append('<div id="feedback">'+message+'</div>');
    });
};
Run Code Online (Sandbox Code Playgroud)

ric*_*ils 15

如果我正确地理解了你的问题,我已经做了一个小提琴,让这个工作正常.这个问题与你如何分配事件处理程序有关,并且正如其他人所说的那样,你已经超越了事件处理程序.当前的jQuery最佳实践是on()用于注册事件处理程序.这是关于jQuery文档的链接on:link

您的原始解决方案非常接近,但您添加事件处理程序的方式有点令人困惑.不将事件添加到HTML元素是最佳做法.我建议阅读Unobstrusive JavaScript.

这是JavaScript代码.我添加了一个计数器变量,以便您可以看到它正常工作.

$('#answer').on('click', function() {
  feedback('hey there');
});

var counter = 0;

function feedback(message) {

  $('#feedback').remove();

  $('.answers').append('<div id="feedback">' + message + ' ' + counter + '</div>');

  counter++;    
}
Run Code Online (Sandbox Code Playgroud)