30

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

$('a').click(function(e) {
  e.preventDefault();
});

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

我不是 JavaScript 程序员,但我认为它可能是使用return false;. 再说一次,我可能完全错了。

在此先感谢您的帮助。

4

5 回答 5

41

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

前任: -

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

所以对于所有的锚:

 var anchors = document.getElementsByTagName('a');
 for(i=0, len=anchors.length; i<len; i++){
     anchors[i].addEventListener('click', function(e){e.preventDefault();});
 }
于 2013-10-04T02:13:52.280 回答
12
// 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);
}
于 2013-10-04T02:13:04.567 回答
1

是的,你可以使用return false;

<a href="" onclick="return false;">test</a>
于 2013-10-04T02:15:09.647 回答
1

返回 false 是要走的路。例如,如果你的锚已经有一个 href:

<a href="http://www.google.com" onclick="alert('clicked!');return false">Click me</a>

像这样调用 onclick 只会执行功能,但不会执行导航。

于 2013-10-04T02:15:42.817 回答
0

@Ricardo,您是对的,先生。

不仅return false禁用所述元素的默认操作,还可以防止冒泡。

 e.preventDefault();
 e.stopPropagation();

等于

return false;

你决定 :)

于 2013-10-04T02:48:46.660 回答