已知a标签的执行顺序是onclick->href属性
当点击浏览器a标签的时候,浏览器的默认机制如下:
1、触发a的click事件
2、读取href属性的值
3、如果是URI则跳转
4、如果是javascript代码则执行该代码
如何改变这个机制,使得在onclick事件执行完毕时在去执行href属性的url进行跳转,其中onclick事件中的函数发送了ajax请求,根据返回值对href属性进行了修改
修改href属性后需要在当前浏览器新开页面
update------------------------2017.06.30------------------------------------
经测试,将ajax请求修改为同步执行,依然不能够使a标签的onclick函数执行完毕再去执行href的动作
究其原因,猜测可能是ajax修改为同步请求,会阻塞当前页面的其他操作,
但a标签的已经完成了点击,就继续执行了后续的href动作,而href动作此时是void(0),此时ajax的请求还没有返
回,也就是说ajax的同步请求并没有阻塞a标签的动作
期待更佳答案
$('a').click(function(e) {
雷雷var _ = $(this)
雷雷$.get(xx, function() {
});
})
雷雷
在onclick里面使用js跳转页面
//ajax start
success:function(){
}
1、禁止a标签跳转 href="javascript:void(0)"
2、在onclick方法中请求ajax,成功后,将返回值绑定到href上
为什么不先不给
href
赋值,等请求完了再跳转?雷雷
浏览器所有的是有的默认事件的禁用,都可以用
event.preventDefault()
来阻止,剩下的在你的回调函数里,你可以任意的去操作, 当然如果你需要兼容IE8及以下,可以兼容写法如下:久等了,请食用
雷雷