jQuery:即使绑定了livequery(),Ajax也只触发一次

时间:2010-08-26 20:33:34

标签: jquery-plugins jquery livequery

好的,我使用livequery()将函数绑定到类'ajaxLink'的所有链接的click事件。该功能完美地发射......一次。在点击后第一次成功调用ajax之后,后续点击不会触发ajax,这意味着(我猜)他们不再被livequery()代码绑定了。

我看到其他有类似问题的人将其代码移到了ready()函数之外,所以我尝试了这一点,但无效(相同的结果)。

$('a.ajaxLink').livequery('click', function(e) {
  e.preventDefault();
  var target = $(this).attr('href') + '&ajax=y';
  var x = $(this).html();

  $.ajax({
   type: 'POST',
   url: target,
   //data: str,
   success: function(msg) {
    $('#mainPanel').slideUp(500, function() {
     $(this).html(msg).slideDown(1000);
    });
   }
  });
 })

如果您需要更多详细信息,请与我们联系。预先感谢您的帮助!这个网站很棒。

1 个答案:

答案 0 :(得分:0)

.livequery()存在问题,具体取决于哪个版本和一些特殊的DOM案例。但是,你可以忽略这个问题...因为你正在做一些有关事件的事情,你可以在这里使用内置的.live()(在jQuery 1.3+中可用),如下所示:

$('a.ajaxLink').live('click', function(e) {
  e.preventDefault();

  $.ajax({
    type: 'POST',
    url: $(this).attr('href') + '&ajax=y',
    //data: str,
    success: function(msg) {
      $('#mainPanel').slideUp(500, function() {
        $(this).html(msg).slideDown(1000);
      });
    }
  });
});