Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
e.preventDefault()的纯JavaScript版本;_Javascript_Jquery - Fatal编程技术网

e.preventDefault()的纯JavaScript版本;

e.preventDefault()的纯JavaScript版本;,javascript,jquery,Javascript,Jquery,使用以下基于jQuery的脚本,您可以停止虚拟链接的默认操作,即: 这个脚本的普通版本是什么 我不是一个JavaScript程序员,但我认为它可能使用返回false。再说一次,我可能完全错了 提前感谢您的帮助。//像$('a')一样,获取文档中的所有元素。 // Like $('a'), gets all the <a> elements in the document. var aElements = document.getElementsByTagName('a'); // C

使用以下基于jQuery的脚本,您可以停止虚拟链接的默认操作,即:

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

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

提前感谢您的帮助。

//像$('a')一样,获取文档中的所有元素。
// 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);
}
var aElements=document.getElementsByTagName('a'); //创建一个函数对象,而不是每个元素一个。 //jQuery的调用约定与常规JS的调用约定相同。 函数preventDefaultListener(e){e.preventDefault();} //对于每个元素, 对于(变量i=0,n=aElements.length;i
您也可以使用香草javascript。通常,您可以使用
返回false
。如果附加事件处理程序,则可以保证在处理程序中传递事件agment,而不是使用
onclick
或元素的任何其他属性(在这种情况下,您应该依赖处理程序中可用的特定事件对象,而不是在所有浏览器中都可以获得该对象,例如在IE中,您将使用
window.event

例:-

因此,对于所有的锚:

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

对于(i=0,len=anchors.length;iyes),您可以使用
返回false;

<a href="" onclick="return false;">test</a>

返回false是正确的选择。例如,如果您的锚已经有href:

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


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

@Ricardo您是对的,先生

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

 e.preventDefault();
 e.stopPropagation();
等于

返回false;

<a href="" onclick="return false;">test</a>


您决定:)

您是对的。从事件处理程序返回
false
将阻止默认操作。@Barmar仅在使用JQuery或内联javascript时使用。
javascript:
没有必要。@icktoofay,使用
javascript:
练习,更新了答案。感谢您的评论:)将JavaScript放在标记本身上不是一种糟糕的做法吗?我在什么地方读过好几遍了。只是说,我不是JS专家。@Ricardo:不,不是,但有些人“宗教”反对它。正如我前面提到的,在标记本身上添加JavaScript不是一种坏做法吗?我在什么地方读过好几遍了。我只是说,我不是JS专家。我相信放置多个语句可能不是最好的方法(以上只是概念证明),但以这种方式附加事件处理程序函数没有错。概念证明,明白了。然而,我正在寻找一个可扩展、更“通用”的解决方案,同时保持最佳实践。我想将此解决方案用于其他项目。如果这听起来很愚蠢,很抱歉,但是否需要向
添加ID才能使此版本正常工作?有没有更“通用”的方法来定位链接?谢谢。@Ricardo不需要,您只需使用
getElementsByTagName('a')
遍历集合并将处理程序绑定到它。这只是你问题的一个例子。:)知道了。这个很好用,而且很短。非常感谢你的解释。这很有效。脚本中的注释非常棒。非常感谢您的帮助。
返回false不阻止本机事件处理程序中冒泡。@user2736012,请详细说明一下好吗?@Ricardo:这个答案说明
返回false
相当于调用
e.preventDefault()
e.stopPropagation()
。虽然对于jQuery的非标准事件处理系统来说是这样,但对于普通的JS事件处理程序来说却不是这样。使用
return false
时,事件仍然会从接收事件的嵌套最深的元素传播(冒泡)到它的祖先,并调用沿途找到的任何处理程序。@user2736012,明白了。谢谢你的解释。
 e.preventDefault();
 e.stopPropagation();