如何在继续功能之前检查元素长度是否已更改 - Javascript

时间:2015-01-08 12:57:31

标签: javascript jquery

有没有办法暂停一个函数来检查元素的状态,只有在状态发生变化时才能继续?

这是我的功能:

JS

 download : function() { 

    var loading         = $('#stats-table > div > div.jtable-busy-message').html();

        while (loading.length > 0) {
            alert("Table still loading, please wait to download report"); 
            loading = $('#stats-table > div > div.jtable-busy-message').html(); 
        }

        // continue with the rest of the function here

    }

我应该在上面的函数中替换说明性的while循环,以暂停函数并在继续执行函数之前检查.length loading的更改。

有关信息,loading变量的长度为180 - 因此只需检查此更改的长度即可。

因此,直到长度更改不会继续使用方法体的其余部分。

更新

我找到了一种简单的方法,所以不再需要任何答案 - 谢谢

2 个答案:

答案 0 :(得分:0)

不,Javascript(大多数情况下)是单线程的,除非其他一些代码改变了它,否则状态不可能改变。任何这样的改变都不会发生" mid function"。您的while循环只会导致浏览器永久锁定。

如果您正在等待异步加载操作完成,那么您的代码需要在该操作的完成回调中继续。

答案 1 :(得分:-1)

$.fn.exists = function(callback) {
  var args = [].slice.call(arguments, 1);

  if (this.length) {
    callback.call(this, args);
  }

  return this;
};

// Usage
$('div.test').exists(function() {
  //do your stuff 
});
​

这可能对您有所帮助:)。