jQuery加载问题

时间:2009-10-05 12:33:23

标签: jquery ajax load

我正在使用jquery加载功能在我页面中的日历页面之间滚动。我正在使用这个功能

$(document).ready(function(){
    $('a.cal').bind('click', function(e) {           
        var url = $(this).attr('href');
        $('div#calender').load(url); 
        e.preventDefault(); 
    });
});

将行为分配给具有“cal”类的锚点,该类基本上将日历的下一页和上一页加载到日历的容器中,#calender。

问题是该行为仅适用于ONCE。 div第一次很好地刷新了新内容,但是后续点击下一个/上一个按钮会使它加载一个新页面。

有人可以帮帮我吗?

我的猜测是上面的代码在第一次加载时将行为分配给类'cal'的锚点,但点击下一个/ prev按钮刷新div中的日历,那些导航按钮没有ajax行为。

我怎么能解决这个问题...我真的很感谢你的帮助。

感谢。

3 个答案:

答案 0 :(得分:3)

使用live确保处理程序绑定到所有当前的未来元素:

  $('a.cal').live('click', function(e) {           
      var url = $(this).attr('href');
      $('div#calender').load(url); 
      e.preventDefault(); 
  });

答案 1 :(得分:0)

您可以尝试使用live("click"...代替bind("click"...

live()使用事件委托,而bind()直接附加到元素,因此当您创建在附加事件处理程序时不存在的新元素时,它们不会获取事件处理程序。

答案 2 :(得分:0)

而不是绑定使用直播

$('a.cal').live( 'click', function(e) {
   // your same click handling
});

来自文档http://docs.jquery.com/Events/live#typefn

  

将处理程序绑定到所有当前和未来匹配元素

的事件(如单击)

这基本上意味着每当使用cal类添加新元素时,它们会自动将事件处理程序绑定到它们