Javascript 为什么.on(';单击';,';a';)不执行e.stopPropagation();在锚点选择器上?
我正在尝试停止div中所有锚的事件的传播,该div附加了click事件,但只有Javascript 为什么.on(';单击';,';a';)不执行e.stopPropagation();在锚点选择器上?,javascript,jquery,stoppropagation,Javascript,Jquery,Stoppropagation,我正在尝试停止div中所有锚的事件的传播,该div附加了click事件,但只有。clickjquery函数firee.stopPropagation(),即('click','a',function())上的不要 代码示例,单击锚点时不会触发对div的单击 <div class="clickedDiv" data-url="http://myurl.com"> <a class="clickedA">my link</a> </div> &l
。click
jquery函数firee.stopPropagation()
,即('click','a',function())上的代码>不要
代码示例,单击锚点时不会触发对div的单击
<div class="clickedDiv" data-url="http://myurl.com">
<a class="clickedA">my link</a>
</div>
<script>
$('.clickedA').click(function(e) {e.stopPropagation();});
$('.clickedDiv').click(function(e) {
var url = $(this).data('url');
window.location.href = url;
});
</script>
$('.clickedDiv')。on('click','a',函数(e){e.stopPropagation();});
$('.clickedDiv')。单击(函数(e){
var url=$(this.data('url');
window.location.href=url;
});
您应该使用e来阻止默认操作。preventDefault()
应该是:
$('.clickedDiv').click(function(e) {
e.preventDefault();
var url = $(this).data('url');
window.location.href = url;
}
注意:不需要其他单击事件:
$('.clickedDiv').on('click', 'a', function(e) {e.stopPropagation();});
希望这有帮助。首先,你失踪了
)
在2个脚本结束时,这可能会导致问题
第二,如果这只是输入错误,那么两个代码应该有相同的结果,事件只在单击div时触发,而在单击锚点时不触发
检查一下这把小提琴
第三,更好的方法是在同一个函数中执行,并检查单击的元素是否不是锚,然后执行如下函数:
$('.clickedDiv3').click(function(e) {
var target = e.target;
if (!$(target).is('.clickedA3')) {
alert('fffff');
} });
有关.on('click')与.click()之间差异的更多详细信息
检查此链接:
委托事件的功能是让事件传播到父级。当它到达父元素时,它已经从源元素中传播出去了。或者,换一种说法,如果你已经停止了a
上的click事件的传播、冒泡,那么你的委托处理程序甚至不会启动。
$('.clickedDiv3').click(function(e) {
var target = e.target;
if (!$(target).is('.clickedA3')) {
alert('fffff');
} });