所以我在jquery中使用了这个代码,href设置为about,我想要做的是在菜单中提供一个链接,点击时触发此选项卡,http://myurl.com#about
$('#info-nav li').click(function(e) {
$('#info div').hide();
$('#info-nav .current').removeClass("current");
$(this).addClass('current');
var clicked = $(this).find('a:first').attr('href');
$('#info ' + clicked).fadeIn('fast');
e.preventDefault();
}).eq(0).addClass('current');
答案 0 :(得分:1)
我会将处理程序附加到<a>
元素而不是<li>
$('#info-nav li a:first').click(function(e) {
$('#info div').hide();
$('#info-nav .current').removeClass("current");
$(this).closest('li').addClass('current');
var clicked = $(this).attr('href');
$('#info ' + clicked).fadeIn('fast');
e.preventDefault();
}).eq(0).closest('li').addClass('current');
因此,在DOMready
事件中,我会读取网址中的哈希值(使用location.hash
),然后我会触发click
事件(或带有.triggerHandler()
的处理程序)在href属性等于该哈希
$(function() {
var hash = location.hash, tgt = $('a[href="' + hash + '"]');
if (hash !== '' && tgt.length) {
tgt.trigger('click');
}
});
在window.onhashchange
事件上调用相同的函数(如果您提供的链接实际上并未更改整个页面)
$('window').bind('hashchange', function() {
var hash = location.hash, tgt = $('a[href="' + hash + '"]');
if (hash !== '' && tgt.length) {
tgt.trigger('click');
}
});