$('#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;
});
我现在正在研究两种可能性:
windows.location.href
jquery调用的正常行为吗?答案 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>
),并完全避免此问题。