我使用下面的代码点击将<a>
href
属性更改为重定向,
我不想使用window.location
,window.open
,
的原因
因为如果我使用这种方法,当用户点击按钮时,他们仍然可以选择按键盘中的键盘打开新网址
a
中的它照常工作,但b
只更改href
不重定向,为什么?以及如何解决?
<div class="submit">
<a>submit</a>
</div>
一
$('.submit').on('click', function() {
var submit = $(this);
// var url = ...;
$(submit).find('a').attr('href', url);
});
b
$('.submit').on('click', function() {
var submit = $(this);
requestPost().then(function(response) {
// ...
// var url = ...;
$(submit).find('a').attr('href', url);
});
});
答案 0 :(得分:0)
这是因为在a
中您在href
容器的onclick
处理程序中分配了anchor
,这意味着点击事件将无法完成onclick处理程序已完成(因为此处理程序能够通过返回false
或执行event.preventDefault
来中止点击和导航。)
在b
中因为您正在使用异步函数,onclick处理程序在异步函数requestPost
完成之前成功完成,因此更改锚点的href
没有导航影响因为onclick已经完成且没有href标记,但是如果再次点击submit
,那么它会导航,因为在前一次点击中设置了href
。
因此,作为快速解决方法,您可以执行的操作是在分配href属性后触发锚点击,例如
$(submit).find('a').attr('href', url).click();