0

好的,所以,我使用 livequery() 将函数绑定到类 'ajaxLink' 的所有链接的单击事件。该功能完美触发......一次。在单击第一次成功的 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);
    });
   }
  });
 })

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

4

1 回答 1

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);
      });
    }
  });
});
于 2010-08-26T20:40:33.360 回答