Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.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 主干事件多次触发_Javascript_Jquery_Backbone.js_Javascript Events - Fatal编程技术网

Javascript 主干事件多次触发

Javascript 主干事件多次触发,javascript,jquery,backbone.js,javascript-events,Javascript,Jquery,Backbone.js,Javascript Events,我将主干网与require.js和jQuery一起使用。 我试图做的是简单地将一个事件绑定到一个应该显示(mouseover)或隐藏(mouseout)视频的容器。事件触发,但不幸的是太多次了(我在.intro content中有几个孩子)。我尝试使用ev.stopPropagation()(如代码中所示)和ev.stoppimmediatepropagation,但这并不能防止冒泡。我做错了什么 视图: 您多次收到事件,因为您的容器中有多个子项。每次鼠标移动到容器中的新子级上时,都会触发一个新

我将主干网与require.js和jQuery一起使用。 我试图做的是简单地将一个事件绑定到一个应该显示(mouseover)或隐藏(mouseout)视频的容器。事件触发,但不幸的是太多次了(我在
.intro content
中有几个孩子)。我尝试使用
ev.stopPropagation()
(如代码中所示)和
ev.stoppimmediatepropagation
,但这并不能防止冒泡。我做错了什么

视图:


您多次收到事件,因为您的容器中有多个子项。每次鼠标移动到容器中的新子级上时,都会触发一个新事件。基本上,您希望使用
mouseenter
。请看下面的示例

由于事件冒泡,此事件类型可能会导致许多问题。对于 实例中,当鼠标指针移动到内部元素上时 例如,一个鼠标悬停事件将被发送到该位置,然后滴流到 外面的这会在不合适的时候触发绑定的mouseover处理程序 时代。有关有用的替代方法,请参见.mouseenter()的讨论


您可能初始化了视图两次

下面是一个双事件的示例,您可以通过删除最后一行
new VideoView()来修复它

要检查这一点,您可以添加

console.log('initialize');
转到
VideoView.initialize()
方法,并在控制台上检查,或使用
debugger
console.trace()
查看完整的调用堆栈

您还可以在文件中检查搜索此代码并计数

new VideoView();

感谢您的回答,但mouseenter和mouseleave也会多次触发事件。@enyce12请确保您没有两次初始化视图这里是一个双事件示例,您可以通过删除最后一行
new VideoView()来修复它。要检查这一点,您可以将
console.log('initialize')
添加到
initialize
方法中,然后检查console。@EugeneGlova就是它。。。我在路由器和另一个视图中初始化了它。非常感谢。“你能给你的答案加上这个暗示吗?”enyce12补充了完整的答案。谢谢
new VideoView();