我有一段JavaScript,当用户点击页面上的元素时,我希望每100毫秒运行10秒钟。
我有一定程度的工作,但是如果用户第二次点击该元素就不会长时间运行。
真的很感激任何帮助。
CODE
jQuery('.pager .pages li, .pager .pages li a').click(function(){
var safariClearFixTimer = setInterval(safariClearFix ,100);
setTimeout(function( ) { clearInterval( safariClearFixTimer ); }, 10000);
function safariClearFix(){
jQuery('.itemgrid-3cols .item').css('cssText', 'clear: none !important;');
console.log('COUNT');
}
});
答案 0 :(得分:1)
在设置元素之前,每次点击元素时可能会清除间隔? 像这样:
var safariClearFixTimer;
var timer;
jQuery('.pager .pages li, .pager .pages li a').click(function(){
clearInterval( safariClearFixTimer );
clearTimeout( timer );
safariClearFixTimer = setInterval(safariClearFix ,100);
timer = setTimeout(function( ) { clearInterval( safariClearFixTimer ); }, 10000);
function safariClearFix(){
jQuery('.itemgrid-3cols .item').css('cssText', 'clear: none !important;');
console.log('COUNT');
}
});
<强> [编辑] 强> 顺便说一句,您还应该清除点击超时或者您可能会有一些意想不到的行为。 的 [EDIT2] 强> 在上面的代码中添加了clearTimeout
答案 1 :(得分:1)
您需要在启动间隔时禁用该按钮,并在清除它时再次启用它。试试这个JSBIN
对于您的应用程序,更改按钮的css以便用户知道它已被禁用也是一个好主意。
答案 2 :(得分:0)
我无法使用setInterval方法工作,所以我用不同的方法解决了它。
我使用javaScript DOMSubtreeModified事件将修改应用于DOM。
jQuery('body.catalog-category-view .main.container .col-main, body.catalogsearch-result-index .main.container .col-main').on("DOMSubtreeModified",function(){
jQuery('.itemgrid-3cols .item').css('cssText', 'clear: none !important;');
});