【问题标题】:jquery $(window).on('load", function() not working as expected. Explanation?jquery $(window).on('load", function() 没有按预期工作。解释?
【发布时间】:2013-07-03 22:54:09
【问题描述】:

我一直在尝试用 .on 事件处理程序替换 .live 和 .bind 处理程序,尽管在某些情况下我有效地使用了 .on ,但它似乎无法按预期工作,尤其是当它被绑定时从动态源“加载”意味着如果我尝试从本身通过 AJAX 动态加载的 html 文件运行以下代码 sn-ps,它会静默失败。

例如,我通过 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 满载时触发,但实际上它根本不会触发。

这只发生在这些事件本身是从动态位置调用时,但我想这种情况经常发生,所以是否有一种解决方法可以使这些事件在动态加载时仍然触发,或者我做错了什么。我遇到了很多这个问题,这显然是加载事件的一个问题,就好像我要将两个事件中的任何一个更改为“单击”而不是加载,然后单击主体上的任何位置,警报会按预期触发。所以我的主要问题是加载事件是怎么回事。

【问题讨论】:

    标签: jquery event-handling load


    【解决方案1】:

    你忘记了 .ready(),它非常有用(不会撒谎,我脑子放个屁也忘记了)

    <script>
      $(document).ready(function() {
        alert('test');
      });
    </script>
    

    希望有帮助:)

    【讨论】:

    • 如果主体不在 DOM 中,则无法将处理程序附加到它。这就是.on 的委托点。
    • 对不起,我在考虑预定义的 HTML 文档。我将其更改为首选和通用格式
    • 这在非动态页面上运行良好。但是将相同的代码放在动态加载的页面上,它会静默失败。
    猜你喜欢
    • 2019-11-19
    • 2013-03-25
    • 2014-03-27
    • 2016-10-11
    • 2022-01-19
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多