标签锚点模拟点击

时间:2012-04-04 10:23:55

标签: jquery triggers anchor

所以我在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');

1 个答案:

答案 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');
    }
});