使用jQuery(简单).is('empty')积极寻找div为空的时候

时间:2014-09-06 23:32:13

标签: jquery is-empty

一旦div为空(涉及动画),我需要启动一个ajax调用。

if($(document).find('h2').is(':empty')) {
     //do something
};

唯一的问题是,这个语句的设置方式,它只在文档准备好后才会显示。我试图在不使用setTimeout函数的情况下执行此操作。

例如,我知道如果我想要在更改选择下拉列表时执行某些操作,我可以使用:$('select')。change()。有任何想法吗?

3 个答案:

答案 0 :(得分:1)

目前没有合理的方法可以做到这一点;间隔检查是唯一可靠的解决方案,甚至在技术上还有很多不足之处。

DOM Mutation Observer可让您轻松解决此问题而不受任何限制,但browser support不太理想。

今天最好的方法(如果可能在你的场景中)将挂钩代码清空元素并让它在时机成熟时调用你的回调。

答案 1 :(得分:1)

如果typer.js提供了可以挂钩的源代码,我会让它触发一个自定义事件,然后您可以在代码中监听它。

我想会有一些for循环逐个删除每个字符,所以在循环结束时你可以这样做:

for(var i = 0; i < $('#divId').innerText.length; i++){
...
}

$(document).trigger('YourCustomEvent');

在你的结尾,你可以这样绑定到自定义事件:

$(document).on('YourCustomEvent', YourCallBackFunction);

然后处理回调:

function YourCallBackFuntion(){...
}

这种方法的优点在于您甚至不必定义自定义事件,只需确保绑定匹配即可。

答案 2 :(得分:0)

我挖得更深了,在这里找到了这个解决方案: What's the easiest way to call a function every 5 seconds in jQuery?

window.setInterval(function(){
  if($(document).find('h2').is(':empty')) {
     //do something
  };
}, 5000);

不是轻微的解决方案,但它不会运行很长时间。