空的href导致文件。已经开火

时间:2017-03-17 14:57:37

标签: javascript jquery

参考

Is an empty href valid?

在我的情况下,我使用了一个空的href,它导致documents.ready再次开火。这是我的HTML:

<li><a onclick="numberOfmonthsToloadInDatabase(this)" href="" id="12Monat">12 Monat</a></li>

当我删除它然后它没有激活document.ready。 我不理解这种行为,任何解释都会非常有用。我无法在评论中发布它,因为我没有足够的积分在任何帖子上添加评论。感谢。

2 个答案:

答案 0 :(得分:1)

从您的示例我不得不质疑,您为什么使用链接标记?因为你只想要触发onclick事件,你应该使用一个span并最终使用css cursor:pointer;表明它是可引用的。

&#13;
&#13;
function numberOfmonthsToloadInDatabase(evt) {
  alert("your clicked");
}
&#13;
li span {
  cursor:pointer;
}
&#13;
<li><span onclick="numberOfmonthsToloadInDatabase(this)" id="12Monat">12 Monat</span></li>
&#13;
&#13;
&#13;

这样可以在没有指定URL时阻止默认链接行为。通过这种方式减少工作量而不是使用javascript preventDefault()来阻止链接执行它的默认行为。

答案 1 :(得分:1)

正如其他人告诉你href导致页面重新加载一样,所以你可以选择使用href="javascript:void(0);"href="#"以避免页面重新加载,如果你想保留带下划线的链接使用href标签时获得的样式。

方法中的

e.preventDefault()将不起作用,因为传递给函数的参数不是事件。它是链接元素本身。

AFAIU您正在尝试为用户创建几个月的选项。更现代的方法是使用数据属性。您可以像这样使用它们:

function numberOfmonthsToloadInDatabase(link) {
    console.log(link.dataset.months);
}
<li>
    <a onclick='numberOfmonthsToloadInDatabase(this)' href='#' data-months='12'>
       12 Monat
    </a>
</li>
<li>
    <a onclick='numberOfmonthsToloadInDatabase(this)' href='#' data-months='10'>
       10 Monat
    </a>
</li>