Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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 jQuery';on()';命令_Javascript_Jquery_Events_Propagation - Fatal编程技术网

Javascript jQuery';on()';命令

Javascript jQuery';on()';命令,javascript,jquery,events,propagation,Javascript,Jquery,Events,Propagation,所以,我想知道为什么这个代码不能正常工作,我能做些什么来防止这种行为: 如果我需要防止父对象的事件传播,而特定的子对象被单击,我使用了方法1,但它似乎不起作用,但方法2却可以正常工作 //方法1 $(文件)({ 点击:功能(e){ console.log('clicked!'); e、 预防默认值(); 返回false; } }“.hax”); //方法2 /*$('.hax')。在('click',函数(e)上{ e、 预防默认值(); 返回false; });*/ //取消注释将阻止事件传

所以,我想知道为什么这个代码不能正常工作,我能做些什么来防止这种行为:
如果我需要防止父对象的事件传播,而特定的子对象被单击,我使用了
方法1
,但它似乎不起作用,但
方法2
却可以正常工作

//方法1
$(文件)({
点击:功能(e){
console.log('clicked!');
e、 预防默认值();
返回false;
}
}“.hax”);
//方法2
/*$('.hax')。在('click',函数(e)上{
e、 预防默认值();
返回false;
});*/
//取消注释将阻止事件传播
.hax{
背景色:白烟;
光标:指针;
}

哈克斯!

方法1使用事件委派,因此在该方法中,事件不直接与元素绑定,而是与父元素绑定,因此在您的情况下,父元素是文档。在这种情况下,无论为该特定元素触发什么事件,都将从DOM树中跟踪该事件,并在事件发生之前执行父调用。在您的情况下,它将首先从父级调用
警报

方法2中,事件直接与元素绑定,父事件仍将被激发,除非您在处理程序中阻止,但由于处理程序绑定到目标,您将不会面临任何其他操作(在您的情况下发出警报)

更好地了解

方法1使用事件委派,因此在该方法中,事件不直接与元素绑定,而是与父元素绑定,因此在您的情况下,父元素是文档。在这种情况下,无论为该特定元素触发什么事件,都将从DOM树中跟踪该事件,并在事件发生之前执行父调用。在您的情况下,它将首先从父级调用
警报

方法2中,事件直接与元素绑定,父事件仍将被激发,除非您在处理程序中阻止,但由于处理程序绑定到目标,您将不会面临任何其他操作(在您的情况下发出警报)

更好地了解

您正在通过方法1创建,也可以通过以下方式创建:

$(document).on('click', '.hax', function (e) {
    console.log('clicked!');
    e.preventDefault();
    return false;
 });
简要说明活动授权:

了解事件如何传播是能够利用事件委派的一个重要因素。每当单击我们的一个锚定标记时,就会为该锚定触发一个单击事件,然后弹出DOM树(一直到DOM顶部),触发其每个父级的单击事件处理程序

这并不意味着使用此方法无法实现您的目标,但为了使其正常工作,您可以为
div.hax
创建一个中间父级,它是
div.wrapper
的后代。我的意思是:

<div class='wrapper' onclick='alert("hello")'>
    <div id="stopHere">
        <div class='hax'>hax!</div>
    </div>
</div>
您正在通过方法1创建,也可以通过以下方式创建:

$(document).on('click', '.hax', function (e) {
    console.log('clicked!');
    e.preventDefault();
    return false;
 });
简要说明活动授权:

了解事件如何传播是能够利用事件委派的一个重要因素。每当单击我们的一个锚定标记时,就会为该锚定触发一个单击事件,然后弹出DOM树(一直到DOM顶部),触发其每个父级的单击事件处理程序

这并不意味着使用此方法无法实现您的目标,但为了使其正常工作,您可以为
div.hax
创建一个中间父级,它是
div.wrapper
的后代。我的意思是:

<div class='wrapper' onclick='alert("hello")'>
    <div id="stopHere">
        <div class='hax'>hax!</div>
    </div>
</div>

除此之外,您还可以学习中的“附加注释”部分。除此之外,您还可以学习中的“附加注释”部分。为什么在第1部分中使用onclick为什么在第1部分中使用onclick谢谢您的回答,现在我明白了。不过,对我来说,这个解决方案有点过于工程化了。尽管如此,我还是非常感谢您的参与
=)
谢谢您的回答,现在我明白了。不过,对我来说,这个解决方案有点过于工程化了。尽管如此,我还是非常感谢您的参与
=)