jquery - 替换元素后点击事件不起作用

标签 jquery events click

我得到了这个代码:

$(function () {
    $('#or').click(function () {
        $("#m0").html('<input type="text" class="highlight" name="test1"/>');
    });
});

它工作正常,并且确实取代了:

<label><input type="radio" id="or" name="type" value="1"/>Click me</label>

使用文本输入,当我点击#or时出现问题单击其他地方(然后它被替换为原始内容),当我将原始内容添加回来时,它不起作用。

这是我用来替换text input的代码已替换#m0与原来的:

$(function () {
    $('.m').click(function () {
        $("#m0").html('<label><input type="radio" id="or" name="type" value="1"/>Click me</label>');
    });
});

所以,为了确保你确实理解我:

原文内容为:

<label><input type="radio" id="or" name="type" value="1"/>Click me</label>

然后我用它来替换上面的文本输入:

$(function () {
    $('#or').click(function () {
        $("#m0").html('<input type="text" class="highlight" name="test1"/>');
    });
});

然后...我使用此代码恢复原始内容:

$(function () {
    $('.m').click(function () {
        $("#m0").html('<label><input type="radio" id="or" name="type" value="1"/>Click me</label>');
    });
});

最后什么时候:

<input type="text" class="highlight" name="test1"/>

替换为:

<label><input type="radio" id="or" name="type" value="1"/>Click me</label>

点击事件不再起作用。

最佳答案

使用 live 方法,即使在 DOM 更新后也会绑定(bind)事件 http://api.jquery.com/live/

$(function () {
    $('#or').live('click', function () {
        $("#m0").html('<input type="text" class="highlight" name="test1"/>');
    });
});

关于jquery - 替换元素后点击事件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7881678/

相关文章:

jquery - iOS 的 CSS 下拉菜单在单击和/或悬停时打开

javascript - 使用 jQuery UI 消失带有模态消息的元素

flash - 如何从显示对象中删除所有事件监听器?

jquery - jQuery .blur() 和 .focus() 事件的问题

jquery - 单击时显示某些拉斐尔形状

javascript - 按钮 onclicked 类已更改,但只有第一次单击有效

javascript - 如何使用jquery获取特定部分的表单数据

javascript - 如何在执行 event.preventDefault() 后重新启用默认值

javascript - 如何通过 ng-click 将其传递给 Angular 函数?

jquery - 在点击方法中使用 addClass 或toggleClass 与 JQuery 不起作用?漏洞?