如何通过jquery禁用由另一个链接创建的链接(包括JSFIDLE)

如何通过jquery禁用由另一个链接创建的链接(包括JSFIDLE),jquery,hyperlink,Jquery,Hyperlink,单击时我有一个链接它创建了一个div,其中包含另一个链接我想禁用新链接尝试了许多解决方案,如preventDefault和return false,但都不起作用,下面是示例: $(文档).ready(函数(){ $(“a[title='go'])。单击(函数(e){ $(“.cities”)。追加( 动态添加链接时,应使用on()方法(假设jQuery>=1.7;jQuery

单击时我有一个链接它创建了一个div,其中包含另一个链接我想禁用新链接尝试了许多解决方案,如preventDefault和return false,但都不起作用,下面是示例:

$(文档).ready(函数(){
$(“a[title='go'])。单击(函数(e){
$(“.cities”)。追加(

动态添加链接时,应使用
on()
方法(假设jQuery>=1.7;jQuery<1.7应使用
delegate()
)防止所述链接的默认操作:

$('.cities').on('click', 'a.mylink', function(e){
    e.preventDefault();
});

您遇到的问题是,当事件绑定发生时,链接不存在,因此
click()
方法不会将
click
事件绑定到相关的
a
元素。使用
on()
click
附加到父/父元素(存在于事件绑定点),然后侦听对与选择器匹配的元素(作为第二个参数传递)触发的事件(第一个参数中的
'click'
字符串)

假设事件和选择器都匹配(
a.mylink
元素是
单击
-ed),然后执行函数,这在本例中只是防止触发默认操作。但是,重要的是要注意,对于委派事件,您不能简单地
返回false
,因为根据定义,在事件传播/冒泡到事件所属的祖先元素时,事件已经被触发嗯

另外,如果两个元素之间的元素有一个显式实现
返回false
的事件处理程序,那么事件委派将不会经过该元素(因为
单击将传播/冒泡到具有处理程序的元素,该处理程序将以
返回false
响应)(由
event.stopPropagation()
event.preventDefault()
组合而成)

例如,在下面的代码中,我使用的是
html

<a href="#" title="go">go</a><p>
<div class="cities">
    <div class="demo">
    </div>
</div>

在上面的注释中,单击
a.mylink
元素时没有触发警报,而如果没有
click
-handler拦截(并否定)
click
事件,则触发
alert()

$([title='go'])。单击(函数(e){
$(“.demo”)。追加(“”);
e、 预防默认值();
});
$('.cities')。在('click','a.mylink',函数(e){
e、 预防默认值();
警报(例如,type+'事件到达“.cities”元素!');
});

因此,在使用委托时要注意那些绑定到元素的事件。在开始时可能会很棘手

参考:


大概是一个打字错误(属于
)?非常感谢您的帮助哦,不客气,我很高兴能帮上忙!谢谢您的接受!=)
$('.cities').on('click', 'a.mylink', function(e){
    e.preventDefault();
});
<a href="#" title="go">go</a><p>
<div class="cities">
    <div class="demo">
    </div>
</div>
$("a[title='go']").click(function(e){
    $(".demo").append("<div class='city'><a href='http://www.google.com' class='mylink'>google</a></div>"); 
    e.preventDefault();
});

$('.cities').on('click', 'a.mylink', function(e){
    e.preventDefault();
    // using an alert because a simple 'e.preventDefault()` wouldn't
    // be visibly different to the 'return false'
    alert(e.type + ' event reached the ".cities" element!');
});

$('.demo').click(function(e){
    return false;
});
$("a[title='go']").click(function(e){
    $(".demo").append("<div class='city'><a href='http://www.google.com' class='mylink'>google</a></div>"); 
    e.preventDefault();
});

$('.cities').on('click', 'a.mylink', function(e){
    e.preventDefault();
    alert(e.type + ' event reached the ".cities" element!');
});