如何停止主题标签的默认点击行为?

时间:2011-06-22 19:38:06

标签: jquery hashtag

  

可能重复:
  Stop default hashtag behavior with jquery

我在链接上有一些jquery代码,它使用.load()将DIV加载到页面中,它还为URL添加了一个hashtag用于分页/书签目的;我想要做的是在点击链接时阻止页面跳转到div。

$('#jqNav li a').click(function(){

    if($(this).parent().is(".nav1")){ $('.landing .main .nav ul').css({ "background-position" : "0 -50px" });} 
    else if($(this).parent().is(".nav2")) {    $('.landing .main .nav ul').css({ "background-position" : "0 -100px" });}
    else if($(this).parent().is(".nav3")) {    $('.landing .main .nav ul').css({ "background-position" : "0 -150px" });}
    else if($(this).parent().is(".nav4")) {    $('.landing .main .nav ul').css({ "background-position" : "0 -200px" });};


    stopAnim = true;
    $page = $(this).attr('href');
    var $hashTag = $(this).attr('name');
    window.location = "#" + $hashTag;
    loadData();
    e.preventdefault();
    return false;

});

3 个答案:

答案 0 :(得分:7)

尝试在链接上使用e.preventDefault();点击

尝试使用$(window).scrollTop(0);阻止#影响页面

答案 1 :(得分:5)

您可以将e.preventDefault()用于此

http://api.jquery.com/event.preventDefault/

或使用:

return false;

preventDefault()stopPropagation()

都是如此

http://api.jquery.com/event.stopPropagation/

修改

不要认为你想做什么。因为能够在不转到该URL的情况下更改页面的URL是不明智的安全性。

例如,您可以将网址更改为银行的网址,让用户认为您的网页代表银行。

也许只在添加哈希值时才有效,所以你可以试试下面的内容(没有测试过,可能一点也不行):

window.location.hash = $hashTag;
return false;

EDIT2

我知道我刚刚告诉你它不起作用但我只是偶然发现这篇文章在SO上使用HTML5做你想做的事情:

Is there a way to change the browser's address bar without refreshing the page?

再次未经测试:)

答案 2 :(得分:0)

您可以使用return false;作为点击处理程序中的最后一个语句。那个或同时使用event.preventDefault()event.stopPropagation()return false等于它们两者,防止该元素的默认行为阻止事件冒泡通过DOM)。

参考文献: