javascript - 如何在添加新链接后禁用链接?

标签 javascript jquery html events

我想在预览中禁止点击链接,而是显示一条错误消息。我想到了一个简单的解决方案:

<div id="preview">
<p>There is a <a href="http://google.com">sample</a> link that should not follow to <a href="http://google.com">google.com</a></p>
<ul></ul>    
</div>

<button id="btn">Add a new link</button>

JavaScript 代码:

$('a').on('click', function () {
    alert("links are disabled");
    return false;
});

$('#btn').on('click', function () {
    $('#preview ul').append('<li><p><a href="http://google.com">another link</a></p></li>');
});

它对已经存在的链接非常有效,但对通过按钮添加的新链接无效。

如何在添加新链接后禁用链接?

我想在添加新链接的代码中保留禁用链接的逻辑(因为有多个地方正在添加新链接)

JS fiddle :http://jsfiddle.net/bseQQ/

最佳答案

要捕获动态元素上的事件,您需要使用委托(delegate)选择器:

$('#preview').on('click', 'a', function () {
    alert("links are disabled");
    return false;
});

这是因为事件是在加载时附加的,显然此时动态元素不存在。委托(delegate)事件附加到父元素,但仅在过滤选择器通过 DOM 冒泡事件时触发。

关于javascript - 如何在添加新链接后禁用链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19378573/

相关文章:

javascript - 使用 jquery 选择元素

jquery - 使用 jquery 在鼠标悬停/移出时隐藏/显示元素

javascript - 从选择中删除和恢复选项

javascript - 每个,attr,还是这个?

javascript - 为什么我的函数不会在我的 Ajax 事件之后或在(文档).ready 上被调用?

JavaScript - 尝试从原型(prototype)中添加原型(prototype)

javascript - if 语句仅在 for 循环的索引 2 上执行

javascript - 使用外部按钮从表中获取 id

javascript - 打开 html 模式对话框

javascript - 页面加载后加载脚本?