参考
在我的情况下,我使用了一个空的href,它导致documents.ready再次开火。这是我的HTML:
<li><a onclick="numberOfmonthsToloadInDatabase(this)" href="" id="12Monat">12 Monat</a></li>
当我删除它然后它没有激活document.ready。 我不理解这种行为,任何解释都会非常有用。我无法在评论中发布它,因为我没有足够的积分在任何帖子上添加评论。感谢。
答案 0 :(得分:1)
从您的示例我不得不质疑,您为什么使用链接标记?因为你只想要触发onclick事件,你应该使用一个span并最终使用css cursor:pointer;表明它是可引用的。
function numberOfmonthsToloadInDatabase(evt) {
alert("your clicked");
}
&#13;
li span {
cursor:pointer;
}
&#13;
<li><span onclick="numberOfmonthsToloadInDatabase(this)" id="12Monat">12 Monat</span></li>
&#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>