在jQuery中创建的URL既重定向到又打开一个新选项卡

url made in jquery both redirect to and opens a new tab

本文关键字:一个 新选项 选项 创建 jQuery URL 重定向      更新时间:2023-09-26
$('#resultsDiv').on('click', '#seeTemplates', function () {
    var ebayTemplate = $('#templates').val();
    var url = '@Url.Action("SeeTemplateDetailsByName", "EbayTemplate")';
    window.location.href = url + "?templateName=" + ebayTemplate;
});

这段代码运行良好,但它有一个让我感到惊讶的侧面效果:当我单击链接时,会打开一个新选项卡,其中包含良好的链接。但是主窗口也会加载好的网址。为什么它会打开一个新窗口?

编辑

根据要求的新代码:

    $('#resultsDiv').on('click', '#seeTemplates', function (e) {
        e.preventDefault();
        alert("Clicked");
        var ebayTemplate = $('#templates').val();
        var url = '@Url.Action("SeeTemplateDetailsByName", "EbayTemplate")';
        window.location.href = url + "?templateName=" + ebayTemplate;
    });

我现在正在研究 2 种可能性:

  1. 代表能有这样的结果吗?
  2. 这是windows.location.href jquery 调用的正常行为吗?

试试这个,添加函数(e(和e.preventDefault((将停止浏览器的默认操作:

$('#resultsDiv').on('click', '#seeTemplates', function (e) {
    var ebayTemplate = $('#templates').val();
    var url = '@Url.Action("SeeTemplateDetailsByName", "EbayTemplate")';
    window.location.href = url + "?templateName=" + ebayTemplate;
    e.preventDefault();
});

我无法发表评论(由于这里很新(,所以你可能想尝试在那里添加e.preventDefault()以防止/阻止默认操作(还有其他方法(

如果你想用JavaScript打开一个新标签,试试这个;

$('#resultsDiv').on('click', '#seeTemplates', function (e) {
    // Prevent default action
    e.preventDefault();
    var ebayTemplate = $('#templates').val();
    var url = '@Url.Action("SeeTemplateDetailsByName", "EbayTemplate")';
    // Open in new tab
    var win = window.open(url + "?templateName=" + ebayTemplate, "_blank");
    // Focus on new tab.
    win.focus();
});

我希望这有所帮助。

由于#seeTemplates是链接(每个 OP 注释(,因此默认链接操作和自定义事件处理程序都在运行。为避免这种情况,您需要阻止链接的默认行为:

$('#resultsDiv').on('click', '#seeTemplates', function (e) {
    e.preventDefault();
    var ebayTemplate = $('#templates').val();
    var url = '@Url.Action("SeeTemplateDetailsByName", "EbayTemplate")';
    window.location.href = url + "?templateName=" + ebayTemplate;
});

您也可以将元素更改为其他类型(可能是<span>(,并完全避免该问题。