jQuery阻止了一个href

时间:2013-12-05 17:04:06

标签: javascript jquery html href

我想在我的网站上使用内联加载(通过AJAX),同时为无法访问Javascript(如果它们仍然存在)的人保留(某些)功能。

我的菜单:

<?php
echo "<h3 id='title'></h3>";
if (empty($_SESSION['uid'])) {
    echo "<a href='index'>Home</a> <br> ";
    echo "<a href='register'>Register</a> <br> ";
    echo "<a href='login'>Log In</a> <br> ";
    echo "<a href='browser'>Browse MarketPlace</a> <br> ";
    echo "<a href='support'>Support us!</a>";
}
elseif (!empty($_SESSION['uid'])) {
    echo "<a href='index'>Home</a> <br> ";
    echo "<a href='overview'>Account Overview</a> <br> ";
    echo "<a href='browser'>Browse MarketPlace</a> <br> ";
    echo "<a href='sell'>Sell Items</a> <br> ";
    echo "<a href='logout'>Logout</a> <br> ";
    echo "<a href='support'>Support us!</a>";
}
?>

我的Javascript:

$(document).ready(function() {
    $(document).on("click", "a", function(event) {
        var dataUrl = $(this).attr("href");
        if (dataUrl != "") {
            loadPage(dataUrl);
        }
        return false;
    });
});

这是正确的方法吗?我特别担心需要阻止原始a href调用,即原生浏览器。

当我使用<a data-url='index'>之类的自定义内容时,它完全正常。然后我尝试了新版本,如果没有return false;它没有按预期工作,但现在确实如此,所以我对此不太确定。

2 个答案:

答案 0 :(得分:8)

使用 event.preventDefault();

如果调用此方法,则不会触发事件的默认操作。

$(document).ready(function() {
        $(document).on("click", "a", function(event) {
           event.preventDefault();
            var dataUrl = $(this).attr("href");
            if (dataUrl != "") {
                loadPage(dataUrl);
            }

        });
    });

答案 1 :(得分:0)

尝试使用

event.preventDefault()

如果事件可以取消,则会取消该事件,而不会停止事件的进一步传播。

参考 event.preventDefault()