javascript - jquery:如何防止导航(链接/提交)?

标签 javascript jquery ajax

我想将我的网站转换为单页应用程序。 我尝试做的是捕获导航过程: 例如:

<a href="myData.php">Change My Data</a>

当用户单击“更改我的数据”链接(或任何其他链接)时,我想捕获该单击并使用 ajax 加载内容(myData.php)并将其显示到我的 mainContent div 中。

<div id="mainContent"></div>

问题是:我无法阻止点击:我尝试过但没有成功:

$( window ).unload(function(e) {
    e.preventDefault();
    e.stopPropagation();
    return false;
  return "Handler for .unload() called.";
});

知道如何防止默认点击(然后是表单 POST 和 GET),并获取目标 url,以便我可以通过 ajax 加载它并显示到我的 div 内容中吗?

最佳答案

您可以定位 anchor 元素本身,而不是定位 unload 方法。例如:

$("a").click(function(e){
    e.preventDefault();
    $("#mainContent").load($(this).attr("href"));
});

但这非常通用,并且包括定位外部应用程序链接。因此,我建议使用 data 属性标记现有 anchor ,以确保您仅将特定链接转换为 AJAX 调用:

<a href="myData.php" data-loadajax="true">Change My Data</a>

$("a").click(function(e){
    if ($(this).data("loadajax")){
       e.preventDefault();
       $("#mainContent").load($(this).attr("href") + " #mainContent");
    }
});

关于javascript - jquery:如何防止导航(链接/提交)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32561875/

相关文章:

javascript - 替换特定的标签名称javascript

javascript - 使用 OpenTok 进行直播?

javascript - 使用 Angular 和 Rxjs 处理多个 HTTP 请求并返回结果

javascript - 使用 JQuery 激活 Bootstrap 选项卡

javascript - 如何使用 ng-repeat 从 Angularjs 表中隐藏行

Jquery - 无限循环

javascript - 网址未正确重定向到 GatsbyJs 中的特定页面

javascript - 我需要从服务器发送日期数据,然后使用 Google Charts 中使用的 google.visualization.datatable 中的日期过滤元素

javascript - 解析 JSON json_encoded 数据库结果

javascript - jQuery 将带有 ajax 的文件发送到 MVC Controller