jQuery焦点事件进入无限递归

时间:2015-10-15 09:22:09

标签: jquery

我尝试了一个简单的例子(FIDDLE)。与此示例类似,我有一些代码需要在选项卡/窗口聚焦时执行(但只有一次)。

jQuery(window).focus(function(){
  alert();
});

为什么焦点事件伴随无限递归。当我在firefox中尝试时,它一直显示警告,直到firefox给了我一个"过多的递归" 错误并且突然出现了递归。

2 个答案:

答案 0 :(得分:3)

每次页面聚焦时,您的代码所说的内容都会显示一条警报,该警报本身会导致页面再次聚焦。

为了澄清焦点功能实际上是在整个窗口上创建一个事件处理程序,当窗口被聚焦时它将被调用,它不会告诉浏览器关注窗口。

如此专注 - >提醒 - >焦点 - >提醒 - >焦点........到无穷大==="过多的递归"

答案 1 :(得分:1)

尝试这样的事情:

var pictureList = [
"http://lorempixel.com/400/200/sports/1",
"http://lorempixel.com/400/200/sports/2",
"http://lorempixel.com/400/200/sports/3",
"http://lorempixel.com/400/200/sports/4",
"http://lorempixel.com/400/200/sports/5", ];

$('#picDD').change(function () {
    var val = parseInt($('#picDD').val());
    $('img').attr("src",pictureList[val]);
});