ajax加载后的Javascript onload

标签 javascript jquery ajax

通过ajax加载返回到主要内容后,函数onload没有运行。 我能理解为什么,但我怎样才能让它在那种情况下运行?

<script type="text/javascript">
        onload = function() {
            if (!document.getElementsByTagName || !document.createTextNode) return;
            var rows = document.getElementById('chat').getElementsByTagName('tr');
            for (i = 0; i < rows.length; i++) {
                rows[i].onclick = function() {
                    $("#chat_main").load("chat", {
                       m: this.id,
                       ajax: 1 //here we are loading another page
                   });
                }
            }
        }
    </script>
    <script>
        function return_to_main() {
            $("#chat_main").load("chat", {
                ajax: 1 //here we trying to load back main page
            });
        }
    </script>

P.S. return_to_main() 绑定(bind)在 input type="button"

最佳答案

您正在绑定(bind)到 window.onload 调用。它不会在每次更新页面内容时神奇地被调用。它只被调用一次。每次要运行代码时都需要调用一个函数。因此,当 Ajax 调用完成时,您将触发它。

但是您正在使用 jQuery,所以请使用它。

没有理由需要绑定(bind)到表中的每一行。使用事件委托(delegate)。现在,当内容发生变化时,您仍将绑定(bind)事件。

$( function () {  //document ready
    var chatMain = $("#chat_main");
    chatMain.on("click", "table tbody tr", function () {  //listen for clicks on table row
        chatMain.load("chat",
            {
                m: this.id,
                ajax: 1 //here we are loading another page
            }
        );
    });
});

关于ajax加载后的Javascript onload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30033235/

相关文章:

javascript - PHP 变量中 JavaScript 中的换行符

jquery - JW-Player - 如何卸载?

android - 移动设备垂直滚动不起作用 *Sprite Spin*

javascript - 在服务器上保存图像错误

javascript - 多元素轮播

javascript - JavaScript 可以更改@page CSS 的值吗?

javascript - 如何在 NODE JS Express 中从 Controller 传递信息以查看

jquery - 使用 mandrill 模板通过 JavaScript 发送电子邮件并隐藏收件人的电子邮件地址

javascript - 在 Prototype 中使用自己的 AJAX 请求回调方法

jquery - ajax 调用后 HTML 数据和内容丢失