首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >js:隐藏div

js:隐藏div
EN

Stack Overflow用户
提问于 2011-01-26 04:03:08
回答 3查看 133关注 0票数 0

我是Javascript的新手,所以请容忍我。

代码语言:javascript
运行
复制
$('#bioContent').css('display','none');
$('#skillsContent').css('display','none');
$('#credsTab').css('background-color','#fff');
$('#credsTab a').css('color','#19d700');
$('#bioTab').css('background-color','#ccc');
$('#bioTab a').css('color','#444');  
$('#skillsTab').css('background-color','#ccc');
$('#skillsTab a').css('color','#444');

$('#credsTab').click(function(){
  $('#credsContent').css('display','block');
  $('#bioContent').css('display','none');
  $('#skillsContent').css('display','none');
  $('#credsTab').css('background-color','#fff');
  $('#credsTab a').css('color','#19d700');
  $('#bioTab').css('background-color','#ccc');
  $('#bioTab a').css('color','#444');
  $('#skillsTab').css('background-color','#ccc');
  $('#skillsTab a').css('color','#444');
})

$('#bioTab').click(function(){
  $('#bioContent').css('display','block');
  $('#credsContent').css('display','none');
  $('#skillsContent').css('display','none');
  $('#bioTab').css('background-color','#fff');
  $('#bioTab a').css('color','#19d700');
  $('#credsTab').css('background-color','#ccc');
  $('#credsTab a').css('color','#444');
  $('#skillsTab').css('background-color','#ccc');
  $('#skillsTab a').css('color','#444');
})


$('#skillsTab').click(function(){
  $('#skillsContent').css('display','block');
  $('#bioContent').css('display','none');
  $('#credsContent').css('display','none');
  $('#skillsTab').css('background-color','#fff');
  $('#skillsTab a').css('color','#19d700');
  $('#bioTab').css('background-color','#ccc');
  $('#bioTab a').css('color','#444');
  $('#credsTab').css('background-color','#ccc');
  $('#credsTab a').css('color','#444');
})

这就是我的tabs的javascript实现。基本上,只要点击一下,div就会隐藏起来,其他的就会出现。

我的问题是,在skillsTab上有一个add skills方法,当我单击它时,它会刷新页面,当它这样做时,它会返回到credsTab,这是页面加载时的默认设置。

我想知道这是不是一种方法,这样当它刷新时,它会留在skillsTab上。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-26 04:14:15

保持状态不变,这可以通过fragment URLsHTML5 history来完成。

例如,使打开skills选项卡将片段更改为#skills,该片段将在刷新期间保持不变。然后检查onLoad中的window.location.hash,以确定页面应该处于什么初始状态。

代码语言:javascript
运行
复制
function switchToTab(tabName) {
    // DOM/CSS manipulation etc. here
}

var tabs = ['bio', 'skills', 'creds'];
var initialTab = 'bio';
for (var i = 0; i < tabs.length; i++) {
    (function(tabName) {
        document.getElementById(tabName + 'Tab').addEventListener('click', function() {
            switchToTab(tabName);
            location.hash = '#' + tabName;
        }, false);
    })(tabs[i]);
}

window.addEventListener('load', function() {
    if (location.hash[0] == '#')
        switchToTab(location.hash.substr(1));
}, false);
window.addEventListener('hashchange', function() {
    if (location.hash[0] == '#')
        switchToTab(location.hash.substr(1));
    else
        switchToTab(initialTab);
}, false);

未经测试,并且有大量的JS库可以为您抽象这一点。

票数 2
EN

Stack Overflow用户

发布于 2011-01-26 04:11:31

一个初步的建议。让你所有的标签都有相同的类,也许class='toggleableTab',然后你可以使用

代码语言:javascript
运行
复制
$('.togglableTab').live('click',function(){
   $('.togglableTab').not(this).hide();
   $(this).show();

});

至于页面刷新。考虑使用AJAX在页面上“添加”您的技能,而无需刷新整个页面。

票数 1
EN

Stack Overflow用户

发布于 2011-01-26 04:28:03

有几个选项卡式解决方案可供您使用-例如,http://jqueryui.com/demos/tabs/。JQuery UI是为您完成大量此类工作的一种很好的方式。

如果你想自己做,我也会建议一个使用类的解决方案,但与其他建议略有不同。相反,应该有两个类,"activeTab“和"tabbable”。在css中,将"activeTab“定义为可见,将"tabbable”定义为隐藏。为每个选项卡分配一个ID和"tabbable“类。在表单中有一个名为"activeTabId“的隐藏字段。确保在加载页面时将其从服务器端传递回来,包括在第一次加载页面时将其设置为默认选项卡。然后,您可以在页面加载时运行以下代码,以使所有代码都能很好地发挥作用:

代码语言:javascript
运行
复制
$(".tabbable").click(new function(){
    $(".tabbable").removeClass("activeTab");
    $(this).addClass("activeTab");
    $("#activeTabId").val($(this).attr("id"));
});

$("#" + $("#activeTabId").val()).addClass("activeTab");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4798231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档