2012-04-04 14 views
1

so habe ich diesen Code für Tabs in jquery wird die href auf ungefähr, was ich will tun, ist, einen Link im Menü zur Verfügung stellen, die diese Registerkarte wird ausgelöst, wenn angeklickt so http://myurl.com#aboutTabbed Anker simulieren klicken

$('#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'); 

Antwort

1

I würde den Handler <a> Element befestigen, anstatt <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'); 

so daß bei DOMready Ereignisse I den Hash der URL in lesen würde (mit location.hash) und I auslösen würde das click Ereignis (oder der Handler mit .triggerHandler()) auf das Element, dessen Attribut href ist gleich dem Hash

$(function() { 
    var hash = location.hash, tgt = $('a[href="' + hash + '"]'); 
    if (hash !== '' && tgt.length) { 
     tgt.trigger('click'); 
    } 
}); 

Anruf die gleiche Funktion auf window.onhashchange Ereignis (wenn der Link Sie bietet nicht wirklich die ganze Seite zu ändern)

$('window').bind('hashchange', function() { 
    var hash = location.hash, tgt = $('a[href="' + hash + '"]'); 
    if (hash !== '' && tgt.length) { 
     tgt.trigger('click'); 
    } 
});