【发布时间】:2009-09-27 00:53:31
【问题描述】:
单击锚链接后,我向服务器发送 $.ajax 请求。
但是,在完成之前,浏览器会导航到 href 位置。
最初我已将 e.preventDefault 放置在所有锚点上,并在成功后:对 href 执行 window.location。
这很好用,但是对于没有 href 属性的锚点,而不是一些 javascript 函数,这会失败,因为找不到 href,并且 ajax 请求失败。
【问题讨论】:
单击锚链接后,我向服务器发送 $.ajax 请求。
但是,在完成之前,浏览器会导航到 href 位置。
最初我已将 e.preventDefault 放置在所有锚点上,并在成功后:对 href 执行 window.location。
这很好用,但是对于没有 href 属性的锚点,而不是一些 javascript 函数,这会失败,因为找不到 href,并且 ajax 请求失败。
【问题讨论】:
在重定向之前检查 href 以确保它是有效的 url?
我建议不要使用<a href="javascript: ..."> 样式。而是使用<a href="#" onclick="...">,或者更好的是,在 javascript 本身中应用您的 javascript 处理程序,而不是在 HTML 标记中。从长远来看,这会让事情变得容易得多。只要您的点击处理程序返回 false,浏览器就不会重定向。
【讨论】:
如果您想停止指向 HREF(已定义或未定义)的页面上的任何链接,您可以尝试
$("a").click(function() { return false; });
一旦链接被点击,jQuery 会返回 false,表示浏览器不会跟随链接,你也可以遵循同样的原则提交表单,这对你的 AJAX 很有用。
养成的一个好习惯是将 ID 放在您将单独使用的元素上以执行 JavaScript,例如“隐藏”链接,<a href="" id="hide-me">Hide me</a> 可以使用来控制
$("a#hide-me").click(function() {
// JavaScript to action goes here
return false;
});
【讨论】: