【问题标题】:jQuery - prevent default behavior when href="#" is clicked (no class or id) [duplicate]jQuery - 单击 href="#" 时防止默认行为(无类或 id)[重复]
【发布时间】:2013-03-17 21:40:54
【问题描述】:

我有一个需要更新的现有脚本。它包含许多结构如下的链接:

<a href="#" onclick="showDialog();return false;">someText</a>

function showDialog(){
$("#modal").dialog("open");
return false;
}

有些有类或 id,有些没有 几乎都打开一个 jQuery 对话框(模态) 我需要停止默认滚动到顶部的行为,因为它会导致在视口上方打开对话框时出现间歇性问题。

我想使用 preventDefault 但不确定在没有 class 或 id 时使用它的最佳方式是什么。

这个问题的重点是在不添加类或更改链接结构的情况下解决问题。我需要一个与链接一起使用的解决方案,因为它们是在现有脚本中编码的。

【问题讨论】:

  • 试试$('a[href="#"]').click(function(e){e.preventDefault();})
  • onclick 属性中的return false 不是已经完成了这个吗?
  • 这行得通。你会想,但在 Chrome 中,返回 false 并没有停止滚动到顶部。提供的其他解决方案没有回答我的问题。我不想重新编码数百个链接。
  • 将您的代码放入答案中,以便我接受它作为解决方案

标签: jquery


【解决方案1】:

你为什么不使用 javascript:void(null);作为href?

<a href="javascript:void(null);" onclick="showDialog(); return false;">SomeText</a>

【讨论】:

  • 甚至更好:为什么在使用jQuery时使用内联js?
  • 因为他也内联调用了他的 showDialog 函数。
  • 如果您有return false,则不需要void。如果您有void,则不需要return false。这个解决方案是一个 hack。
【解决方案2】:

由于您使用的是 jQuery,我将对其进行重组...

HTML

<a href="#" class="dialog-link">Text</a>

JS

<script>
$(document).ready(function(){
    $('.dialog-link').on('click', function(e){
        e.preventDefault();
        $("#modal").dialog("open");
    });
});
</script>

使用preventDefault时不需要return false

【讨论】:

    猜你喜欢
    • 2017-10-23
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多