jQuery方法.on()关于动态(AJAX)加载的数据

时间:2013-07-22 12:28:05

标签: javascript jquery ajax

所以我在我的网站上有一个页面,其中包含一个带有类名' mainContent'使用AJAX .ajax()每隔1分钟自动更新一次新数据。这里的内容需要一些JavaScript来实现某些功能。现在的问题是JavaScript不能在没有整页刷新的情况下加载到DOM中的新数据。我搜索并发现使用.on()将数据绑定到DOM应该可以工作,如下所示:

$(document).on('click', '.mainContent',function(){
        expand();
    });

其中expand是一个JS函数。 但是,它只对新数据有效,但对前一次AJAX调用中添加的数据没有...

2 个答案:

答案 0 :(得分:0)

你几乎就在那里,这只是你的逻辑。这就是这个jQuery函数的工作原理:

  1. 您设置容器。这是将保存要绑定的AJAX包装项的元素。越具体,越好。否则,您将为整个页面连接一个事件,这是不好的
  2. 活动。你在听什么?
  3. 谁将解雇处理程序。形成短语的选择器:当这些人 这个大家伙激活此事件时,运行此代码
  4. 让我们假设您的mainContent充满了超链接(我不确定,因为您的问题缺乏细节):

    $('.mainContent').on('click', 'a', function () {
      //do your magic
      //$(this) is the clicked link
    });
    

    这样,我们的短语是:当 .mainContent 中的链接点击时,请运行 this 。< / p>


    <强>更新

    根据评论,我认为您的问题可能出在expand函数上。 我们来试试吧:

    $('.mainContent').on('click', 'a', function () {
      $(this).simpleexpand();
    });
    

答案 1 :(得分:-1)

您是否尝试在加载新数据的ajax函数的回调上应用绑定?

类似的东西:

$.ajax({
  url: url...//Classic ajax call
}).done(function ( data ) {

    //Apply your 'on' here

});