无法阻止javascript中的默认事件
我只是一个初学者,所以也许这个问题会让你微笑,但我就是找不到任何解决办法 我有一个链接:无法阻止javascript中的默认事件,javascript,jquery,preventdefault,Javascript,Jquery,Preventdefault,我只是一个初学者,所以也许这个问题会让你微笑,但我就是找不到任何解决办法 我有一个链接: <div class="comments"><a href="#" onclick="get_comments('.$row['post_id'].')">'.$comments_no.' comments</a></div> 一切正常,直到我点击一个链接。。。每次我点击一个链接,它就会把我带到页面的顶部。有人能告诉我如何解决这个问题吗?您需要从事件处理程
<div class="comments"><a href="#" onclick="get_comments('.$row['post_id'].')">'.$comments_no.' comments</a></div>
一切正常,直到我点击一个链接。。。每次我点击一个链接,它就会把我带到页面的顶部。有人能告诉我如何解决这个问题吗?您需要从事件处理程序返回false
<div class="comments"><a href="#" onclick="return get_comments('.$row['post_id'].')">'.$comments_no.' comments</a></div>
这会导致该行为:
href=“#”
因此,如果您不需要它,可以在href中调用javascript函数,或者不使用此属性,那么您必须将锚点设计为链接
href=“#”
表示转到页面顶部。您可以使用其他参考:
href=“#foo”
这意味着使用id foo跳转到
可能的解决办法:
<a href="javascript:get_comments('.$row['post_id'].')">
或
如果删除href,它看起来就不像是一个带有.mylink类的链接。可以使用href=“#”
但我看不到您的默认函数
试试这个:
HTML:
使用.data()
可以访问数据-*
属性
使用.click()
您拥有比onclick更好的事件处理程序,传递事件(单击“#”)并阻止它
JSFiddle:
(很抱歉对答案进行了1000次编辑)试试这个,它会有用的
<div class="comments"><a href="Javascript:void(0)"
onclick="get_comments('.$row['post_id'].')">'.$comments_no.' comments</a></div>
当使用(或滥用)A标记作为JavaScript按钮时,您有两个选项来防止默认行为(即跟随链接):
javascript:void 0
不要设置href=“#”
,而是使用它来完成工作并返回未定义的,例如:href=“javascript:void(获取注释('.$row['post\u id'.])”
。有关void
的更多信息,请参见此
event.preventDefault
更好的方法是分离HTML和JavaScript(请参阅),并使用事件处理程序。在JS中,您可以简单地向DOM元素添加一个处理程序
<a id="commentsLink" data-id=".$row['post_id']." href="#">comments</a>
在我看来,onlick
事件处理程序与jQuery结合使用是不可取的。充分利用jQuery的强大功能,而不仅仅是一点点:-)您能不能请您更好地格式化它并删除示例中不需要的代码?例如,get_comments
中的几乎所有内容都可以使用,但不推荐使用,并且受到高度鄙视。如果jQuery可用,则可以使用非常简单的工具来正确执行。请说明您在何处发现此内容不推荐使用?没有href
属性的锚元素在HTML4中无效
<div class="comments">
<a href="#" class="comments-click" data-id="'.$row['post_id'].'">'.$comments_no.' comments</a>
</div>
$(document).ready(function() {
$('.comments-click').click(function(event) {
event.preventDefault(event);
id = $(this).data('id');
/* ... */
});
});
<div class="comments"><a href="Javascript:void(0)"
onclick="get_comments('.$row['post_id'].')">'.$comments_no.' comments</a></div>
<a id="commentsLink" data-id=".$row['post_id']." href="#">comments</a>
var commentsLink = document. getElementById("commentsLink");
commentsLink.addEventListener("click", function(event) {
var postId = event.target.getAttribute("data-id");
// your code
event.preventDefault();
}