我在链接上有一些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;
});
答案 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)。
参考文献: