在jquery中创建的url都重定向到并打开一个新选项卡

时间:2014-11-10 14:35:19

标签: javascript jquery

$('#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;
    });

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

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

3 个答案:

答案 0 :(得分:2)

试试这个,添加函数(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();
});

答案 1 :(得分:2)

我无法发表评论(因为这里是新的),所以您可能想尝试添加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();
});

我希望这会有所帮助。

答案 2 :(得分:0)

因为#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>),并完全避免此问题。