【问题标题】:Multi-level menu for an FAQ常见问题解答的多级菜单
【发布时间】:2016-01-16 22:30:00
【问题描述】:

我正在制作一个常见问题解答,询问您 3 个问题以给出正确答案。它的工作方式与本网站相同:Nokia Lumia FAQ

代码有效。根据您按下的按钮,您可以看到 3 个级别的内容。当在级别 1、级别 2 和级别 3 上按下按钮时,它将改变颜色,因此您以三个改变颜色的按钮结束,以您需要帮助的方式更容易理解 例如:Phone - Andriod - Simcard帮助。

请注意,第 1 级和第 2 级内容在 JS 代码中非常相似,但第 3 级有点不同,因为在显示内容时您的浏览器会向下滚动。而且第 3 级确实有超链接而不是按钮。

我必须手动复制这段 JS 代码的一部分以添加新按钮,我认为可以有更简单的方法。非常感谢任何帮助。

这里是 JS:

$(document).ready(function(){

// Level 1
function show(sel) {
  var el = $(sel);
  el.fadeToggle();
  $('.showmore-1').not(el).fadeOut("slow");
}

$('.showmore-1').hide();

$('.click-1').click(function(){
    $('.click-1').removeClass('clickcolor')
        $(this).addClass('clickcolor');
});

$('#click-1a').click(function () {
  show('#showmore-1a');
});

$('#click-1b').click(function () {
  show('#showmore-1b');
});

$('#click-1c').click(function () {
  show('#showmore-1c');
});


// Level 2
function show(sel) {
  var el = $(sel);
  el.fadeToggle();
  $('.showmore-2').not(el).fadeOut("slow");
}

$('.showmore-2').hide();

$('.click-2').click(function(){
    $('.click-2').removeClass('clickcolor')
        $(this).addClass('clickcolor');
});

$('#click-2a').click(function () {
  show('#showmore-2a');
});

$('#click-2b').click(function () {
  show('#showmore-2b');
});

$('#click-2c').click(function () {
  show('#showmore-2c');
});

// Level 3
function show(sel) {
  var el = $(sel);
  el.fadeToggle();
  $('.showmore-3').not(el).fadeOut("slow");
}

$('.showmore-3').hide();

$('.click-3').click(function(){
    $('.click-3').removeClass('clickcolortext') //Level 3 display text instead of button to be pressed and therefore another class of color.
    $(this).addClass('clickcolortext');
});

$('#click-3a').click(function () {
  show('#showmore-3a');
  $('html, body').scrollTop($('#showmore-3a').offset().top);
  return false; 
});

$('#click-3b').click(function () {
  show('#showmore-3b');
  $('html, body').scrollTop($('#showmore-3b').offset().top);
  return false; 
});

$('#click-3c').click(function () {
  show('#showmore-3c');
  $('html, body').scrollTop($('#showmore-3c').offset().top);
  return false; 
});

});
enter code here

这是 HTML 的一部分

<button class="click-1" id="click-1a">Mobile</button> 
<button class="click-1" id="click-1b">PC</button> 
<button class="click-1" id="click-1c">Tablet</button>

<div id="showmore-1a" class="showmore-1">View content for mobile help</div>
<div id="showmore-1b" class="showmore-1">View content for pc help</div>
<div id="showmore-1c" class="showmore-1">View content for tablet help</div>
enter code here

这里是 CSS

.clickcolor {
    background-color: #4d4d4d !important;
}

.clickcolortext {
    color: #4d4d4d !important;
}

【问题讨论】:

  • 如果您有一个工作代码,并且您正在寻找有关如何改进样式的建议,codereview.stackexchange.com 是一个更好的网站。
  • 谢谢,我会检查那个网站。

标签: javascript jquery html css review


【解决方案1】:

在按钮上添加目标属性:

<button class="click-1" id="click-1a" data-target="#showmore-1a">Mobile</button> 
<button class="click-1" id="click-1b" data-target="#showmore-1b">PC</button> 
<button class="click-1" id="click-1c" data-target="#showmore-1c">Tablet</button>

JS

$('button.click-1').click(function(){
      $('.click-1').removeClass('clickcolor')
      $(this).addClass('clickcolor');
      show($(this).data('target'));
});

【讨论】:

  • 这确实有效。我可以以某种方式缩短或删除课程 showmore-1 吗?它只告诉不应该显示内容。
    查看手机帮助内容
    查看电脑帮助内容
    div>
    查看平板电脑帮助内容
  • 你在我的按钮上写了一个目标属性。我想知道我是否可以删除按钮上的 ID 属性,因为我看不到它们有任何用途?
  • 当然...类对它们进行分组更有帮助,除非您对每个按钮 ID 有任何 css 细节并不重要。大多数人在学习 javascript 时都想使用 ID...最简单的选择器,但实际上类更有帮助
  • 好的,我现在从所有 3 个按钮中删除了 ID,但代码将不再起作用:/?那么身份证需要在那里吗?顺便说一句,谢谢你帮助我:)!
  • 那么必须是其他代码。答案中的代码不使用按钮的 ID,它用于内容
【解决方案2】:

要缩短这段代码:

$('#click-1a').click(function () {
  show('#showmore-1a');
});

$('#click-1b').click(function () {
  show('#showmore-1b');
});

$('#click-1c').click(function () {
  show('#showmore-1c');
});

好吧,我可以这么说:

$('[id^="click-"]').click(function () {
  show('#showmore-' + this.id.replace("click-", ""));
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多