1

这是有问题的代码

$('.consejosTab').on("click", function(e){
    //window.location = 'http://encuentratrabajoonline.es/consejos/';
    console.log('Clicked' , e , this);
});

如果您在 IE8 中查看页面http://encuentratrabajoonline.es/,该页面将立即重定向到子域。似乎正在发生的是,这不是将 click 事件绑定到元素,而是调用 consejosTab 上的 click 函数。我已经做了一些初步测试,我已经注释掉了重定位,只是在声明中放了一个 console.log。我还确认没有其他单击功能正在运行并单击该元素。

除了页面上所有其他糟糕的标准(这只是我要在这个网站上进行的清理工作的开始),我需要知道为什么这只发生在 IE8 中?

4

2 回答 2

0

我也为此苦苦挣扎了一段时间,发现我无意中调用了对 myfunction 的调用,但正如标准所预期的那样,在这个 SOF question 中有更好的描述。通过定义内联函数,它将自动执行。

以下三个语法行导致相同的问题(立即执行)

$('.consejosTab').on("click", function(e){ alert("I will execute immediately");});
$('.consejosTab').on("click",myFunc()); 
$('.consejosTab').click(myFunc());

一种解决方案是使用以下任一选项调用命名函数 - 请注意括号的删除。传入 'myFunc()' 意味着返回一个值,传入 'myFunc' 是对应该执行的函数的引用。

$('.consejosTab').on("click", mmyFunc); */ JS */
$('.consejosTab').click(myFunc); */ JQuery Shorthand */
于 2014-06-06T16:11:00.033 回答
0

根据您使用的 jQuery 版本(希望是最新版本),请改用以下构造:

$('.nav').on("click", function(e){
  // your code here
});
于 2013-02-15T02:42:22.013 回答