Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么.on(';单击';,';a';)不执行e.stopPropagation();在锚点选择器上?_Javascript_Jquery_Stoppropagation - Fatal编程技术网

Javascript 为什么.on(';单击';,';a';)不执行e.stopPropagation();在锚点选择器上?

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

我正在尝试停止div中所有锚的事件的传播,该div附加了click事件,但只有
。click
jquery函数fire
e.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');
    } });