preventDefault()类似于javascript中的功能

时间:2016-04-26 07:22:48

标签: javascript jquery function preventdefault

我已经完成了这个问题

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生成的。

任何帮助将不胜感激。提前谢谢!

4 个答案:

答案 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.preventDefaultevent.stopPropagation()

来自jquery源代码,jquery.event.dispatch

if ( ret !== undefined ) {
   if ( (event.result = ret) === false ) {
     event.preventDefault();
     event.stopPropagation();
   }
}

Javascript中提供了preventDefaultstopPropagation

对于IE&lt; 9,event.stopPropagation可由event.cancelBubble = true 完成,event.preventDefault可由event.returnValue = false

完成

答案 3 :(得分:0)

preventDefault存在于javascript中,但如果您对类似jQuery的解决方案感兴趣,则需要注意兼容性问题。 考虑到与旧浏览器的兼容性问题,另一种解决方案是:

&#13;
&#13;
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;
&#13;
&#13;