Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX动态内容”;活动代表团“;替换为;每一个;_Javascript_Jquery_Ajax_Dynamic_Momentjs - Fatal编程技术网

Javascript AJAX动态内容”;活动代表团“;替换为;每一个;

Javascript AJAX动态内容”;活动代表团“;替换为;每一个;,javascript,jquery,ajax,dynamic,momentjs,Javascript,Jquery,Ajax,Dynamic,Momentjs,我正在网站上实现AJAX“加载更多”分页 为了使.click()事件适用于动态加载的内容,我将所有.click()代码替换为 $(document).on('click', ".selector", function (event){ 对于可点击的东西来说,这一切都很好 现在,我试图让一些非基于点击的init代码以同样的方式工作。这是我的代码的旧版本,适用于普通的非AJAX内容: var now = moment(); $('time').each(function(i, e) { v

我正在网站上实现AJAX“加载更多”分页

为了使.click()事件适用于动态加载的内容,我将所有.click()代码替换为

$(document).on('click', ".selector", function (event){
对于可点击的东西来说,这一切都很好

现在,我试图让一些非基于点击的init代码以同样的方式工作。这是我的代码的旧版本,适用于普通的非AJAX内容:

var now = moment();
$('time').each(function(i, e) {
    var time = moment($(e).attr('datetime'));
    $(e).html(time.from(now));
    $(e).attr('title', time.format('D MMM YYYY h:mma'));
});
如何使此代码也能在动态加载的
标记上工作

我尝试了以下方法,但显然是错误的(使用此代码,
标记都不起作用):


您需要将侦听器添加回新添加的时间

Jquery在加载页面时设置了一次它的侦听器,这就是为什么加载页面后无法访问它们的原因。我建议使用一种方法添加您的侦听器,并在成功回调结束时简单地调用该方法。

您需要将侦听器添加回新添加的时间

Jquery在加载页面时设置了一次它的侦听器,这就是为什么加载页面后无法访问它们的原因。我建议使用一种方法来添加侦听器,并在成功回调结束时简单地调用该方法。

要执行所需的操作,第一个块中的逻辑是正确的-只需在新的
元素添加到DOM中后再次执行它。最简单的方法是将逻辑提取到函数中,如下所示:

function setTime($container) {
  $container = $container || $(document);
  var now = moment();
  $container.find('time').each(function(i, e) {
    var time = moment($(e).attr('datetime'));
    $(e).html(time.from(now));
    $(e).attr('title', time.format('D MMM YYYY h:mma'));
  });
}

setTime(); // on load

$.ajax({
  url: '/foo',
  success: function(html) {
    var $container = $('.container').append(html);
    setTime($container); // after the AJAX call
  }
})

要执行您需要的操作,第一个块中的逻辑是正确的-您只需在新的
元素添加到DOM中后再次执行它。最简单的方法是将逻辑提取到函数中,如下所示:

function setTime($container) {
  $container = $container || $(document);
  var now = moment();
  $container.find('time').each(function(i, e) {
    var time = moment($(e).attr('datetime'));
    $(e).html(time.from(now));
    $(e).attr('title', time.format('D MMM YYYY h:mma'));
  });
}

setTime(); // on load

$.ajax({
  url: '/foo',
  success: function(html) {
    var $container = $('.container').append(html);
    setTime($container); // after the AJAX call
  }
})