Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.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函数会触发两次?_Javascript_Jquery_Html - Fatal编程技术网

Javascript 为什么我的jQuery函数会触发两次?

Javascript 为什么我的jQuery函数会触发两次?,javascript,jquery,html,Javascript,Jquery,Html,所以我尝试创建一个小型的个人使用jQuery插件。我已经完成了函数,但是setInterval()函数由于某种原因触发了两次,我似乎不知道为什么。起初,它似乎不会触发两次,但我通过测试(在间隔的每个触发器上添加警报)知道它会触发两次,在这个示例中,您可以看到它逐渐变得越来越快(大约2分钟后,它会非常快),这是它触发两次的结果 有人能帮我修一下吗 Javascript代码: (function( $ ) { $.fn.imageSwap = function(img) { var src

所以我尝试创建一个小型的个人使用jQuery插件。我已经完成了函数,但是setInterval()函数由于某种原因触发了两次,我似乎不知道为什么。起初,它似乎不会触发两次,但我通过测试(在间隔的每个触发器上添加警报)知道它会触发两次,在这个示例中,您可以看到它逐渐变得越来越快(大约2分钟后,它会非常快),这是它触发两次的结果

有人能帮我修一下吗

Javascript代码:

(function( $ ) {

  $.fn.imageSwap = function(img) {
  var src = this.attr("src");
  var id = this;
  id.fadeToggle("fast", function(){
  id.attr("src", img);
  id.fadeToggle("fast");
  });
  return this;
  };

 })( jQuery );



(function( $ ) {

  $.fn.slideShow = function(array, time) {
  var i = -1;
  var num = array.length;
  var id=this;

  var interval = setInterval(function(){
  i++
  if(i>(num)-1){i=0}
  id.imageSwap(array[i]);
  },time);

  };
页面代码:

<script>

$("#slideshow").slideShow([
"http://www.rta.nsw.gov.au/licensing/images/dkt_faqs/number1.gif",
"http://www.rta.nsw.gov.au/licensing/images/dkt_faqs/number2.gif",
"http://www.rta.nsw.gov.au/licensing/images/dkt_faqs/number3.gif",
"http://www.rta.nsw.gov.au/licensing/images/dkt_faqs/number4.gif"
], 1000);

</script>

<img id="slideshow" src=""/>

$(“幻灯片放映”)。幻灯片放映([
"http://www.rta.nsw.gov.au/licensing/images/dkt_faqs/number1.gif",
"http://www.rta.nsw.gov.au/licensing/images/dkt_faqs/number2.gif",
"http://www.rta.nsw.gov.au/licensing/images/dkt_faqs/number3.gif",
"http://www.rta.nsw.gov.au/licensing/images/dkt_faqs/number4.gif"
], 1000);

我在这里缩小了问题的范围,并注意到只有在切换选项卡时才会发生这种情况。所以,一点搜索揭示了一些事情

从设计上看,Chrome似乎会叠加
setInterval
调用。因此,当您返回到“非活动”选项卡时,它恰好在一行中运行它们

您可以在SO中的其他相关问题中看到一些变通方法:


它是否可能与这样的事情有关?(setInterval没有等效的clearInterval)您可能会在代码中多次直接或间接调用
.slideShow()
,可能需要返回false?这是我最初的想法,但我已经查看了所有代码,找不到再次调用该函数的地方。这就是为什么我希望有人能帮助我找到我怀疑fadeToggle()应对这种意外行为负责的那个问题或另一个问题。您是否使用淡出/淡出得到了相同的结果?