我一直在尝试用.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满载时应该开火,但实际上它根本不开火。
只有当这些事件本身是从动态位置调用时才会发生这种情况,但我想这种情况经常发生,所以有没有办法让这些事件在动态加载时仍然激发,或者我做错了什么。我已经遇到过很多次这个问题,这显然是加载事件的问题,就好像我要将两个事件中的任何一个更改为"点击"而不是加载,然后点击身体上的任何地方,警报就会像预期的那样触发。所以我的主要问题是负载事件是怎么回事。
你忘了.ready(),它非常有用(不要撒谎,我脑子里有个屁,也忘了)
<script>
$(document).ready(function() {
alert('test');
});
</script>
希望能有所帮助:)