【问题标题】:How can I intercept a link with jQuery when using a ajax call?使用 ajax 调用时如何拦截与 jQuery 的链接?
【发布时间】:2009-04-26 09:38:04
【问题描述】:

我可能在做一些愚蠢的事情。但是,如果我有一个正常的链接,例如:

<div id="changeMe"></div>
<a href="/Not/Intercepted" id="interceptMe">A link</a>

我将一个 jQuery click 事件附加到链接上,如下所示:

$('#interceptMe').click(function() {
  $('#changeMe').text('Changed');
  return false;
});

一切都很顺利。该页面确实被重定向到/Not/Intercepted,我认为这是正确的。

现在...

我在点击事件中引入了一个像 $.get 这样的 ajax 调用,现在我的页面将被错误地重定向到该页面,这实际上覆盖了 ajax 调用。

$('#interceptMe').click(function() {
  $.get('/Ajax/Call', goesIn, function(comesOut) {
  $('#changeMe').html(comesOut);
    }, "html");
  return false;
});

有没有办法让 jQuery 或 javascript 仍然拦截链接点击,所以它不会转到 href 页面?我想为那些没有启用 javascript 的用户保留 href。蒂亚!

【问题讨论】:

  • 你确定这不起作用吗?因为它在我看来没问题(即它不应该重定向)。
  • 我就是这么想的。它看起来对我来说也是正确的,所以不确定到底发生了什么。

标签: jquery ajax


【解决方案1】:

不要返回 false,而是使用 ....

$("#interceptMe").click(function(event){

    event.preventDefault();

    // Ajax here

    return false; //for good measure
});

http://docs.jquery.com/Events/jQuery.Event#event.preventDefault.28.29

我在使用 IE 时遇到了很多问题,尤其是不听返回 false。显然其他人也是如此http://coffeeandpaste.blogspot.com/2009/02/javascript-onclick-return-false-does.html

【讨论】:

  • @rball 'return false' 应该做同样的事情。在使用 jQuery 的 3.5 年中,我从未遇到过这个问题。如果“event.preventDefault”有效而“return false”无效,请告诉我。
  • 会的,感谢您的回复。我也觉得这很奇怪,但它发生在我有 ajax 调用的所有事情上。
  • @KyleFarris 我遇到了很多浏览器无法使用 return false 的问题。 preventDefault() 到目前为止 100% 工作,所以我已经切换到它以获得更可靠的代码。我更新了我的答案,提供了指向其他有相同问题的人的链接。
猜你喜欢
  • 2017-04-24
  • 2011-05-22
  • 1970-01-01
  • 2011-10-16
  • 1970-01-01
  • 2011-09-26
  • 1970-01-01
  • 2011-02-13
  • 1970-01-01
相关资源
最近更新 更多