0

我有时注意到,当我使用 jQuery 时,在调用 jQuery 函数后,我的 URL 末尾会添加一个额外的“#”。例如,一旦 jQuery 函数初始化,URL 'www.mywebsite.com' 将更改为 'www.mywebsite.com/#'。'www.testsite.com/users.php' 相同,更改为 'www.testsite.com/users.php#'。

为什么jQuery添加'#'?

4

3 回答 3

2

如果您的函数是从链接 onclick 运行的,则需要使用 event.preventDefault()

请参阅http://api.jquery.com/event.preventDefault/

于 2013-01-05T00:53:51.753 回答
1

通常这是因为您有一个带有 jQ​​uery 点击处理程序的虚拟链接。通常会看到带有 href 的链接#仅用于触发某些 JavaScript。

<a href="#" class="button">Go</a>

通过养成调用e.preventDefault()点击处理程序的习惯可以轻松解决此问题:

$(function() {
    $(".button").click(function(e) {
        e.preventDefault();
        ...
    });
});

您也可以使用return false,但这具有停止事件传播的附加效果。如果我也想要那种效果,我喜欢e.stopPropagation()明确添加。它使代码及其预期效果对未来的开发人员(或 6 个月后的我自己)更加明确和清晰。

于 2013-01-05T00:54:57.847 回答
1

处理点击事件时,您可能会得到这个。如果您不希望发生这种情况,只需在事件处理函数的末尾添加event.preventDefault()或。return false

于 2013-01-05T00:57:10.527 回答