我已经完成了这个问题
event.preventDefault() vs. return false
但没找到我的解决方案。其实我正在使用javascript函数返回上一页,点击
工作正常<a href="#" onclick="goBack()"><img src="images/backbtn.png"></a>
功能
function goBack(){
window.history.back();
}
当我点击<a>
时,它会在我想要阻止的网址中包含#
。在jquery中,我们使用preventDefault()
来停止元素的默认事件,但是在javascript中有任何类似的函数来阻止它。
我知道我可以在javascript:void(0)
中使用href
来解决问题,但可能还有很多其他实例,所以我想知道javascript中的函数。
我尝试使用return false;
,但我把它写在这个上面
function goBack(){
return false;
window.history.back();
}
然后它会停止执行的功能,如果我像这样写
function goBack(){
window.history.back();
return false;
}
然后这个return false;
没有效果。我确信javascript中有一些是因为jquery是从javascript生成的。
任何帮助将不胜感激。提前谢谢!
答案 0 :(得分:4)
据我所知,preventDefault()也是一个原生的JS函数,所以你可以在没有jQuery的情况下使用它,并得到相同的结果。
您可以在此处详细了解:MDN: Event.preventDefault()
答案 1 :(得分:2)
event.preventDefault()在Javasccript和Jquery
中都有效
如果获得#
是问题而且由于某种原因你真的只想使用preventDefault()
那么你必须将event
传递给函数然后在函数内使用{{} 1}}
event.preventDefault()
然后在您的Javascript中使用此传递的事件并停止默认行为。
<a href="#" onclick="goBack(event)"><img src="images/backbtn.png"></a>
答案 2 :(得分:1)
要添加答案,jquery中的return false
同时执行event.preventDefault
和event.stopPropagation()
来自jquery源代码,jquery.event.dispatch
if ( ret !== undefined ) {
if ( (event.result = ret) === false ) {
event.preventDefault();
event.stopPropagation();
}
}
Javascript中提供了preventDefault和stopPropagation。
对于IE&lt; 9,event.stopPropagation
可由event.cancelBubble = true
完成,event.preventDefault
可由event.returnValue = false
答案 3 :(得分:0)
preventDefault存在于javascript中,但如果您对类似jQuery的解决方案感兴趣,则需要注意兼容性问题。 考虑到与旧浏览器的兼容性问题,另一种解决方案是:
function goBack(evt){
var e = evt || window.event;
if (e !== undefined) {
if (e.preventDefault) {
e.preventDefault();
} else { // IE
e.returnValue = false;
}
}
window.history.back();
}
&#13;
<a href="#" onclick="goBack(event)"><img src="images/backbtn.png"></a>
&#13;