单击事件上的setInterval运行10秒

时间:2014-11-25 16:27:03

标签: javascript time

我有一段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');
    }
}); 

3 个答案:

答案 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;');
    });