1

可能重复:
使用 jquery 停止默认主题标签行为

我在链接上有一些 jquery 代码,它使用 .load() 将 DIV 加载到页面中,它还在 url 中添加了一个标签以用于分页/书签目的;我想要做的是在单击链接时阻止页面跳转到 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;

});
4

3 回答 3

7

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

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

于 2011-06-22T19:40:35.713 回答
5

你可以用e.preventDefault()这个

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

或使用:

return false;

preventDefault()两者兼而有之stopPropagation()

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

编辑

不要以为自己想做的事就可以做到。因为能够在不转到该 URL 的情况下更改页面的 URL 是不安全的。

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

也许它仅在添加哈希时有效,因此您可以尝试以下方法(尚未测试,很可能不起作用):

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

编辑2

我知道我刚刚告诉过你它不起作用但是我偶然发现了这篇关于 SO 的帖子,它使用 HTML5 来做你想做的事:

有没有办法在不刷新页面的情况下更改浏览器的地址栏?

再次未测试:)

于 2011-06-22T19:40:32.453 回答
0

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

参考:

于 2011-06-22T19:40:20.660 回答