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