【问题标题】:How to collapse tabs in jQuery?如何在jQuery中折叠标签?
【发布时间】:2013-06-04 21:15:08
【问题描述】:

当用户选择此 Javascript 脚本时,我正在使用此 Javascript 脚本显示与特定主题相关的 Youtube 频道列表,但如果我再次单击主题名称,其选项卡不会折叠。相反,它再次显示频道列表。

var channels=[
    { id:1, name:"Example 1", description:"", videos:[]},
    { id:2, name:"Example 2", description:"", videos:[]},
];

jQuery(function() {
    jQuery("#tabs").tabs();
    listChannels();
});

function listChannels(){
    jQuery(channels).each(function(i,channel){
        jQuery("#listOfChannels").append("<li id='channel"+channel.id+"'><span onclick='showChannel("+channel.id+")'>&gt; "+channel.name+"</span><div id='videos"+channel.id+"' class='contentChannel'></div></li>");
    });
} 

【问题讨论】:

  • 也许可以在标签初始化中添加一个select 选项,这样你就可以hide 标签..或者你正在寻找Accordion - jqueryui.com/accordion
  • 通过 jQuery 编写内联 onclick 处理程序让我的眼睛流血了。
  • @moonwave99 使用 onclickeach。它是一个致命的组合,不是吗?数组长度 === 没有单独的 onclick 处理程序:D
  • @moonwave99 你最好纠正他的代码而不是制作这种 cmets,你看他是 stackoverflow 的新手。
  • 折叠选项卡没有任何意义,您的意思是更改活动选项卡吗?如果是,您是否阅读过 jquery ui tabs 文档以及什么阻碍了您? enable() 应该很简单

标签: javascript jquery jquery-ui jquery-ui-tabs


【解决方案1】:

您可以尝试在您的 tabs 初始化中设置 collapsible: true。见Docs

 $( "#tabs" ).tabs({
  collapsible: true
 });

但在您的情况下,我觉得使用Accordion 更好,这是您频道的更好视觉表示。

AND,正如@moonwave99 提到的,使用onclick 属性不好,尤其是在循环中。 Read this question to know more。 (附加:Docs for event delegation)使用 jquery 提供的click 事件处理程序。

$("#listOfChannels").on("click", "li" , function () {
   showChannel(this.id);
});

并且,从 onclick 的邪恶魔掌中拯救你的 listChannels()

jQuery(channels).each(function(i,channel){
    jQuery("#listOfChannels").append("<li id='channel"+channel.id+"'><span>&gt; "+channel.name+"</span><div id='videos"+channel.id+"' class='contentChannel'></div></li>");
});

【讨论】:

  • 谢谢,我要试试这个。事实上,这是一个已经被其他人实现的代码,我今天被告知要学习 jQuery 并解决这个问题:(
  • 如果对您有帮助,请将答案标记为正确答案 :-) 学习 jquery 并不难.. jquery.com 中的文档非常好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-25
  • 1970-01-01
  • 1970-01-01
  • 2016-06-08
  • 2011-11-01
  • 2012-12-30
相关资源
最近更新 更多