我一直试图绕过.on事件处理程序替换.live和.bind处理程序,虽然我在某些情况下有效地使用了.on但似乎没有按预期工作,特别是当它被绑定时从动态源“加载”意味着如果我尝试从一个html文件运行下面的代码片段,该文件本身是通过AJAX动态加载的,它会无声地失败。
例如,我通过ajax将test.html加载到div中,test.html具有:
<script>
$(window).on('load', 'body', function(){
alert('test');
});
</script>
理论上应该在页面上的所有元素都加载时提供警告框,对吗?在实践中它什么都不做。警报永远不会触发。同样如此:
<script>
$(document).on('load', 'body', function(){
alert('test');
});
</script>
理论上,当dom满载时应该开火,实际上它根本不会发射。
这只发生在从动态位置本身调用这些事件的情况下,但我会想到这种情况经常发生,因此有一种解决方法可以使这些事件在动态加载时仍然触发,或者我做错了什么。我遇到过很多这个问题,这显然是加载事件的一个问题,好像我要将两个事件中的任何一个更改为“click”而不是加载,然后单击身体的任何地方,警报将按预期触发。所以我的主要问题是加载事件是什么。
答案 0 :(得分:0)
你忘记了.ready(),这是非常有用的(不会说谎,我有一个大脑屁并忘了它)
<script>
$(document).ready(function() {
alert('test');
});
</script>
希望有所帮助:)