1

だから私はjqueryのタブ用にこのコードを持っています。hrefは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');
4

1 に答える 1

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イベント時に URL のハッシュを ( を使用して) 読み取り、href 属性がそのハッシュと等しい要素でイベント (または を使用したハンドラー)location.hashをトリガーします。click.triggerHandler()

$(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');
    }
});
于 2012-04-04T10:28:45.350 に答える