简单的JavaScript版本的e.preventDefault();

Ric*_*Zea 26 javascript jquery

使用以下基于jQuery的脚本,您可以停止虚拟链接的默认操作,即: <a href="#">

$('a').click(function(e) {
  e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

这个剧本的普通版本是什么?

我不是一个JavaScript程序员,但我认为它可能是一个使用的东西return false;.再说一遍,我可能完全错了.

在此先感谢您的帮助.

PSL*_*PSL 36

你也可以在vanilla javascript中使用event.preventDefault().您可以随时使用return false.如果你附加一个事件处理程序,你可以保证在处理程序中传递事件agument而不是使用onclick元素的任何其他属性(在这种情况下,你应该依赖于处理程序中可用的特定事件对象,你可能不会进入所有浏览器,就像在IE中你会使用window.event).

例如: -

  document.getElementById('someId').addEventListener('click', function(e){ //say this is an anchor
         //do something
        e.preventDefault();
   });
Run Code Online (Sandbox Code Playgroud)

所以对于所有锚点:

 var anchors = document.getElementsByTagName('a');
 for(i=0, len=anchors.length; i<len; i++){
     anchors[i].addEventListener('click', function(e){e.preventDefault();});
 }
Run Code Online (Sandbox Code Playgroud)


Mik*_*uel 10

// Like $('a'), gets all the <a> elements in the document.
var aElements = document.getElementsByTagName('a');
// Create one function object instead of one per <a> element.
// The calling convention is the same for jQuery as for regular JS.
function preventDefaultListener(e) { e.preventDefault(); }
// For each a element,
for (var i = 0, n = aElements.length; i < n; ++i) {
  // register the listener to be fired on click.
  aElements[i].addEventListener('click', preventDefaultListener);
}
Run Code Online (Sandbox Code Playgroud)