1
我正在使用自动滚动脚本,我正在使用jquery中的函数移动到菜单上的单击元素。我使用setInterval单击菜单上的每个项目。直到现在一切正常。但是,当我需要停止setInterval时,问题出现了,我的意思是,如果用户单击其中一个元素,请停止setInterval。用户单击自动滚动脚本时清除setInterval
我有两个问题或问题的你要跟:
- 这是做一个自动滚屏的正确方法?
- 如果不是,如果你给我一点线索,我会非常感激。如果这是正确的方法,如何知道点击事件是由用户还是脚本触发的?
好吧。谢谢阅读。我正在使用的代码是下一个,正如我所说,正在工作正常,以循环滑动。非常感谢。就像一个旁注:对于客户请愿书,我不能使用jquery插件来创建滑块,所以我必须手动完成。
$('.slider-controls a').live('click',function(e){
moveSlider($(this).attr('href'),e);
return false;
});
function moveSlider(toDiv,elem){
var nextPos = $(toDiv).position().top;
$('.slider-total').animate({
top: -nextPos
}, 700);
$('.slider-total div').removeClass('activo');
$(toDiv).addClass('activo');
}
var autoSlider = setInterval(function(){
var slideNext;
if (!($('.slider-total .activo').next().attr('id'))){
slideNext = '#' + $('.slider-total .post:first').attr('id');
} else {
slideNext = '#' + $('.slider-total .activo').next().attr('id');
}
$('a[href='+slideNext+']').click();
},4000);
是的。我知道它实际上停止了我的setInterval。我需要的是当用户点击一个项目时停止setInterval。我可以在$('。slider-controls a')中使用clearInterval(autoSlider)。live('click');功能。这里的问题是脚本本身正在点击每个项目,所以如果我以这种方式使用它,则滑块只会动画到第二个项目。 – Chuy
你的'setInterval'函数直接调用'moveSlider'。然后你可以在'click'事件中清除超时,因为它来自用户。总是试图提取你的逻辑来分离你可以从事件或你的JavaScript调用的方法,而不是“假装”成为用户 –