Jquery两个setInterval相互冲突

时间:2017-09-20 17:05:10

标签: jquery

我有一个链接到隐藏div的图像映射。我希望图像映射中的项目突出显示,并且对应于该区域的隐藏div也要显示。

我正在使用imagemapster.js突出显示地图中的区域。要循环使用这个突出显示:

var $anchors = jQuery('area'), counter = 0;
var timer = setInterval(function(A){
jQuery($anchors).mapster('deselect');
jQuery($anchors).eq(counter++ % $anchors.length).mapster('select');
}, 5000);

效果很好。但是当我添加代码来循环隐藏div时,它是:

var $text = jQuery('.visible'), counter = 0;
var timertwo = setInterval(function(B){
jQuery($text).addClass('hidden');
jQuery($text).eq(counter++ % $text.length).removeClass('hidden');
}, 5000);

然后通过选择其他所有项目而不是1的增量。

有没有办法将这两个函数合并为一个,这样它们可以一次增加一个并同时增加一个?

1 个答案:

答案 0 :(得分:0)

  

你应该使用两个独立的计数器来避免干扰,两个   不同的$(function(){...});

$(function() {
    var $anchors = jQuery('area'), counter1 = 0;
    var timer = setInterval(function(A){
    jQuery($anchors).mapster('deselect');
    jQuery($anchors).eq(counter1++ % $anchors.length).mapster('select');
    }, 5000);
}
$(function() {
    var $text = jQuery('.visible'), counter2 = 0;
    var timertwo = setInterval(function(B){
    jQuery($text).addClass('hidden');
    jQuery($text).eq(counter2++ % $text.length).removeClass('hidden');
    }, 5000);
}