2

如何在 $.get 请求发出之前延迟加载锚链接?我有

$("a.track").click(function() {
    $.get("track.php", { id: "page1.html" });
});

...但是在上述请求通过之前单击链接会加载新页面(我在 PHP 页面上的响应没有被记录)。如果我使用 停止链接return false;,$.get 请求会按预期工作,但现在链接不会加载。

我想做的是做类似的事情

$.get("track.php", { id: "page1.html" }, function() {
    return true;
});

...但是在执行此操作之前会加载新页面,因此无法按预期工作。

我怎样才能使这个链接的加载只在发送 GET 请求后发生?我并不真正关心从请求中获取结果,我只想在新页面加载之前发送它。

4

2 回答 2

6

您可以向单击处理程序传递一个回调,该回调将在成功时重定向页面。

$("a.track").click(function(event) {
  event.preventDefault(); // Ignore user's click
  var href = $(this).attr('href');
  $.get("track.php", { id: "page1.html" }, function(data){
    window.location = href; // Redirect on success
  });
});
于 2009-03-23T18:22:33.280 回答
0
$("a.track").click(function() {
    var that = this;
    $.get("track.php", { id: "page1.html" }, function(){
        $(that).attr('onclick', '').click();
    });
});

或类似的东西。你必须杀死你以前的点击事件处理 attr('onclick', '') 可能会也可能不会这样做。

于 2009-03-23T18:21:15.873 回答