一旦div为空(涉及动画),我需要启动一个ajax调用。
if($(document).find('h2').is(':empty')) {
//do something
};
唯一的问题是,这个语句的设置方式,它只在文档准备好后才会显示。我试图在不使用setTimeout函数的情况下执行此操作。
例如,我知道如果我想要在更改选择下拉列表时执行某些操作,我可以使用:$('select')。change()。有任何想法吗?
答案 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);
不是轻微的解决方案,但它不会运行很长时间。