2012-09-27 96 views
1

我对一些简单的选项卡使用以下代码,并且想知道是否可以编辑此代码以启用深度链接?我没有使用jQuery UI,也不想使用插件。 提前喝彩帮忙。jQuery深度链接

$('#tabber > div').hide(); // Hide all divs 

    $('#tabber ul li a').click(function() { // When link is clicked 
     $('#tabber ul li').removeClass('active'); // Remove active class from links 
     $(this).parent().addClass('active'); //Set parent of clicked link class to active 
     var currentTab = $(this).attr('href'); // Set currentTab to value of href attribute 
     $('#tabber > div').fadeOut(200); // Hide all divs 
     $(currentTab).fadeIn(200); // Show div with id equal to variable currentTab 
     return false; 
    }); 
+3

什么是“深度链接”? – Bryan

+0

除了选择活动的3行然后在页面加载时提取哈希段来做同样的事情?(尽管我强烈推荐hashchan ge插件)。 –

+1

url的变化点击,例如:example.com#tab-name和用户可以通过相同的URL获得该标签 – jquerynoob

回答

1

我要去一个轻量级的插件去浏览器的兼容性,因为我看到别的是一个错误: http://benalman.com/projects/jquery-hashchange-plugin/

要实现深层链接,你需要考虑相关的逻辑的一部分作为(RESTy可行性),而不是尝试对现有动画代码进行某种改造。换句话说,哈希变化驱动UI而不是其他方式。

使用该插件和更改上述逻辑所以UI不过是一个标准链路(类似<a href="#tab_foo"...>,然后更改显示逻辑到哈希变化作出反应:

$(window).hashchange(function() { 
    $('#tabber ul li').removeClass('active');  
    var currentTab$ = $(location.hash); 
    currentTab$.parent().addClass('active'); 
    $('#tabber > div').fadeOut(200); 
    currentTab$.fadeIn(200); 
}); 

TWEAK根据需要(一些这对于实际的DOM来说肯定没有意义)并且在页面加载时触发(处理深度链接)