页面重新加载不会触发文档就绪

时间:2017-07-08 22:30:02

标签: javascript jquery

以下td在第一页加载时由javascript更新,以便结果如下(即所有工作)。 但是,当调用分页链接时,不会调用文档就绪。因此,日期不重写。 我尝试了各种各样的东西,但没有缝合,以使其工作。在页面重写时,属性在服务器端更新。 没有ajax调用,分页链接只是一个简单的url重新加载同一页面,但查询路径已更改。我理解重装行为是正常的 - 我只是无法解决它。

任何想法请在后续加载时调用我的初始化调用?

<td class="date" data-time="1499543100110"></td>

$(document).ready(function () {
    initialise();
});

function initialise() {
    $(".date").each(function(){
        var millisec = parseInt($(this).attr("data-time"));
        var ts = moment(new Date(millisec)).format("MMMM Do YYYY, h:mm:ss a");
        $(this).text(ts);
    });
}

<a href="?page=6&amp;size=20&amp;criteria=" data-ajax-load="#ajaxload">7</a>

输出

<td class="date" data-time="1499543100110">July 8th 2017, 8:45:00 pm</td>

更新

如下所述,问题还有很多。正在捕捉分页链接&amp;该请求是由ajax发出的,绕过所有正常的js钩子。我删除了下面的捕获&amp;每件事都按预期工作。网络网址流量看起来像是直接页面加载,但实际上是一个ajax调用。

$(document).on('click', 'a[data-ajax-load]', function(event) {
    var _url = $(event.target).attr('href');
    var _target = $(event.target).data('ajax-load');
    $(_target).load(_Url + ' ' + _target, 
        function(response, status, xhr) {
            // display errors etc
        }
    );
    return false;
});

下面的答案都可能是正确的,但不需要探索它们 - 感谢您的指导。

2 个答案:

答案 0 :(得分:0)

我刚发现这个...
尝试使用ajaxComplete() ...当ajax请求完成时会触发。

$( document ).ajaxComplete(initialise);

答案 1 :(得分:0)

您可以尝试使用&#39; onload&#39;在你的身体标签上如下:

<body onload="myFunction()">
  //Code
</body>

这样做是等待标记(在本例中为<body>标记)在执行函数之前完全加载(在这种情况下为myFunction()。)

您编辑的代码应该类似于以下内容:

<body onload="initialise()">
  <td class="date" data-time="1499543100110"></td>

  function initialise() {
    $(".date").each(function(){
      var millisec = parseInt($(this).attr("data-time"));
      var ts = moment(new Date(millisec)).format("MMMM Do YYYY, h:mm:ss 
    a");
      $(this).text(ts);
    });
  }

  <a href="?page=6&amp;size=20&amp;criteria=" data-ajax load="#ajaxload">7</a>
</body>

编辑:经过一些在线研究,我发现了这个:

您也可以使用JavaScript body.onload()函数来激发类似的效果,如下所示:

body.onload(initialise);

我不是jQuery的专家,但是看看你的代码,我认为你也可以这样做,虽然我不确定:

$(body).onload(function () {
  initialise();
});