2012-04-04 134 views
1

所以我對jQuery的標籤的代碼,將href設置爲些什麼,我想要做的是提供觸發此選項卡菜單中的鏈接點擊所以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

我會處理程序連接到<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(與location.hash),我會觸發事件click(或者其href屬性的元素與.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'); 
    } 
});