在调用onClick函数后停止href链接

3

我有一个链接:

<h2><a href=?p=article&aid='.$article->id.'" onclick="loadPage('article'); return false;">.$article->title.</a></h2>

然后它调用这个函数:

function loadPage(page){
    $("#content").html("Loading...");

    $.post("page.php", {p: page}, function(data){
        $("#content").html(data);   
    });
}

但是在我的JavaScript运行后,href仍然有效。我之前使用过onClick中的return false;来防止这种情况发生,但这次不起作用了???

请检查并更新您的第一段代码片段(只需复制粘贴实际内容),因为这种代码根本无法起到任何作用。 - mkilmanas
你在 athesyn.php 文件中进行了哪种处理? - Ura
3个回答

1

你最好使用jQuery将点击事件绑定到你的函数上,因为逻辑更加清晰。

$('h2 a').click(function(event) {
    $("#content").html("Loading...");

    $.post("page.php", {p: page}, function(data){
        $("#content").html(data);   
    });

    return false;
});

通常,如果 href 仍然有效,那么很可能是 JavaScript 错误导致的。 编辑:您还可以使用 event.preventDefault() 来停止绑定了点击功能的 href 被跟随。
最后,href 看起来非常完整(缺少开头引号)。这是打字错误吗?

2
жҲ‘еҗҢж„ҸпјҢеҸӘжҳҜз”Ёe.preventDefault();д»Јжӣҝ return false;пјҲе…¶дёӯeжҳҜдј йҖ’з»ҷеҚ•еҮ»еӨ„зҗҶзЁӢеәҸзҡ„дәӢ件еҸӮж•°пјүдјҡжӣҙеҗҲйҖӮпјҲevent.preventDefault()пјүгҖӮ - mkilmanas

1

看起来你的脚本出现了错误,没有到达返回块。如果添加try catch,它将忽略脚本中的错误。

function loadPage(page){
try{
    $("#content").html("Loading...");

    $.post("page.php", {p: page}, function(data){
        $("#content").html(data);   
    });
} catch(err){}
}

1

我最喜欢的方法是替换href属性。这样做的好处是保持与非JS客户端的兼容性,而且不必处理“停止”事件或任何类似的技巧。例如:

function unobtrusiveLinkSetup(link) {
    // replace the about link's href
    J(link).attr('jshref', J(link).attr('href'));
    J(link).removeAttr('href');

    // handle the link's action
    J(link).click(function(index) {
            J(this).stop();
            // make a request in the background
            J.get(J(this).attr('jshref'), function(result) {
                // whatever you need to do with the link..
            });
    });
}

然后你可以在文档的就绪函数或其他地方执行unobtrusiveLinkSetup("#myLink");


这正是我所需要的。我已经从我的链接中删除了onclick事件,但留下了href事件来触发。谢谢! - James Drinkard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接