Javascript 如何设置setTimeOut以避免脚本在每个循环内无响应

Javascript 如何设置setTimeOut以避免脚本在每个循环内无响应,javascript,jquery,kendo-ui,kendo-datepicker,Javascript,Jquery,Kendo Ui,Kendo Datepicker,如何添加setTimeOut以避免每个循环中的脚本无响应?基本上,在这个网格中,我有许多行,这些行有一个由剑道日期选择器组成的列。问题是,在绑定到网格几秒钟后,我得到了无响应脚本框,然后我必须单击“继续”,它将工作: var j = 0; $$('.dtInputs'),each(function (input){ j++; input.kendoDatePicker(); if(j > 500){ if(j % 1000 = 0)

如何添加setTimeOut以避免每个循环中的脚本无响应?基本上,在这个网格中,我有许多行,这些行有一个由剑道日期选择器组成的列。问题是,在绑定到网格几秒钟后,我得到了无响应脚本框,然后我必须单击“继续”,它将工作:

var j = 0;

$$('.dtInputs'),each(function (input){

    j++;
    input.kendoDatePicker();
    if(j > 500){
       if(j % 1000 = 0)
       {
           window.setTimeOut(arguments.callee, 1);
           return false;
       }
    }
});

问题是,通过查看这个,我不认为它将继续添加datepicker,因为它在剩余输入中返回false。不知道怎么做。

这里的问题是
。每个
本身都是同步的

  • 您可以将脚本卸载到
  • 或者使用
    setInterval
对你来说,这应该行得通

$.fn.asyncEach = function(callback){
  var i = 0;
  var elements = this;
  var timer = setInterval(function(){
    callback.call(elements[i],elements[i]);
    if(++i >= elements.length) clearInterval(timer);
  },0);
}

$('.dtInputs').asyncEach(function(){
  $(this).kendoDatePicker();
});

请注意,我使用计时器强制执行异步行为。它可以防止阻塞用户界面,但处理速度会明显变慢。

很抱歉,我对Jquery有点陌生,如果我的场景是这样的话,我将如何应用上面提到的内容呢?我非常感谢。@ergwin更新了答案。
window.setTimeOut
未定义。也许你的意思是
window.setTimeout
?(注意外壳)如果你使用的是剑道格网,你应该考虑使用它的编辑和虚拟滚动能力——一次创建很多小部件通常不会带来良好的用户体验(而用户通常只与一些小部件交互,我想)