Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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 - Fatal编程技术网

Javascript 触发单击事件会使浏览器崩溃

Javascript 触发单击事件会使浏览器崩溃,javascript,jquery,Javascript,Jquery,检查此链接: 单击div时,我希望内部的链接触发单击事件。 但控制台显示,单击事件会一直触发,直到浏览器崩溃。为什么会这样?解决办法是什么 真正的div里面有很多内容,所以我不希望标签覆盖整个div或者将div包装在标签中。此函数适用于移动设备。因为在每次单击事件中,您都会再次调用单击,从而导致无休止的递归 由于您的单击处理程序位于具有box类的div上,因此单击这些div内的任何内容都将导致该div上的单击事件 似乎你想点击div来跟踪链接?您可以这样做,而不是点击链接: window.lo

检查此链接:

单击div时,我希望内部的链接触发单击事件。 但控制台显示,单击事件会一直触发,直到浏览器崩溃。为什么会这样?解决办法是什么

真正的div里面有很多内容,所以我不希望标签覆盖整个div或者将div包装在标签中。此函数适用于移动设备。

因为在每次单击事件中,您都会再次调用单击,从而导致无休止的递归

由于您的单击处理程序位于具有box类的div上,因此单击这些div内的任何内容都将导致该div上的单击事件

似乎你想点击div来跟踪链接?您可以这样做,而不是点击链接:

window.location = $(this).find(".link").attr("href");

试试这个。它停止无限循环。但更好的问题是,为什么要这样做

$(".box").click(function(e){
    console.log("clicked");
    $(this).find(".link").trigger("click");
});

$(".link").click(function(e){
    e.stopPropagation();
});

当您触发单击.link时,该事件会跳转到其父事件,并最终再次到达.box。因此进入递归。 为了防止这种情况,你可以做如下的事情

$(".box").click(function(e){
    if(e.currentTarget == e.target)
    {    
        console.log("clicked");
        $(this).find(".link").trigger("click");
    }
});
e.target是事件发生的元素,e.currentTarget是事件绑定的元素

建议再提供一种替代解决方案

$(".box").click(function(e){
    console.log("clicked");
    $(this).find(".link").trigger("click");       
});
$(".link").click(function (e)
{
    /*This would prevent a click triggered on ".link" to propagate upto its parent i.e ".box" */
    e.stopPropagation();
});

@我认为递归应该是当你希望循环发生的时候。另外,没有基本情况。@G\M它不是一个循环;函数本质上是调用自己,所以这是递归。缺乏基本情况是导致问题的原因:它会无限递归。是的,而且还值得扩展答案,说明递归发生的原因。或者,你知道,不要调用$this.find.link.triggerclick;因为它什么都不做。哈哈,真的。但是没有人有时间做那些逻辑的事情。触发元素的点击事件的目的是什么?时间戳:27/03/2013 19:34:06错误:太多递归源文件:行:2749