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

时间:2013-10-15 10:13:40

标签: 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 fidddle:http://jsfiddle.net/bseQQ/

4 个答案:

答案 0 :(得分:3)

工作演示 http://jsfiddle.net/P6Hbg/

API:.on - http://api.jquery.com/on/

这应符合您的原因:)

<强>码

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

答案 1 :(得分:3)

您最好使用event delegation

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

此处#preview用作静态父元素。

答案 2 :(得分:3)

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

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

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

答案 3 :(得分:0)

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