jquery - 尝试构建一个切换按钮,使用 bootstrap 和 jquery 显示和隐藏 div 框

标签 jquery twitter-bootstrap

我正在尝试在我的网站中构建一个功能,其中有一个切换按钮。当按钮按下时,div 应该显示,当按钮正常时,div 应该不可见。 div 本身上还有一个关闭的“X”,如果单击该“X”,应该会使按钮正常(即不按下)

问题是我不知道如何取消激活该按钮。我可以删除类(class) active ,它更新了 DOM,但它从 bootstrap 中的某个地方返回(DOM 更改上的 Chrome 断点向我显示了堆栈跟踪)

这是我的代码:

  var addInputButton = function(id, txt, clk) {
  var btn = $('<a>')
      .text(txt)
      .attr("id", id)
      .addClass("btn")
      .addClass("btn-mini")
      .attr("data-toggle", "button")
      //.addClass("btn-info")
      .click(clk);
  $('#input_help_section')
    .append(btn);
  return btn;
};

// CHEATSHEET -----------------
(function() {
  var toggleName = "markdownCheatSheetIsVisible";
  var btnId = "markdownCheatsheetToggleButton";
  var box = $("#markdownCheatsheet");

  var showBox = function() {
    var cheatSheetButton = $('#' + btnId);
    if (!cheatSheetButton.hasClass("active")) {
      cheatSheetButton.toggle();
      cheatSheetButton.show();
    }
    box.show();
  };

  var hideBox = function() {
    var cheatSheetButton = $('#' + btnId);
    if (cheatSheetButton.hasClass("active")) {
      cheatSheetButton.toggle();
      cheatSheetButton.show();
    }
    box.hide();
  };

  addInputButton(btnId, "Markdown cheatsheet", function(event) { 
    if ($('#' + btnId).hasClass("active") === false) {
      showBox();
    } else {
      hideBox();
    }
  });

  $("#markdownCheatsheetClose").click(function() {
    hideBox();
  });

  // start shown
  showBox();

})();

这里有很多奇怪的事情:

  • 我尝试做addClass('active')removeClass('active')showBoxhideBox功能,但 Bootstrap 中某处的触发器不断添加 active删除后重新上课。
  • toggle方法是在 bootstrap 中定义的,据我所知,它是为了切换 active类,但它也隐藏了它(在某个地方),并且我无法将其从事件状态切换开,我不太明白。

最佳答案

我找到了一个不需要 JavaScript 的解决方案:

<div class="btn-group" data-toggle="buttons-checkbox">
    <a class="btn collapse-data-btn" data-toggle="collapse" href="#details">Show details</a>
</div>
<div id="details" class="collapse">
    <p>Details details details details details details details details...</p>
</div>

关于jquery - 尝试构建一个切换按钮,使用 bootstrap 和 jquery 显示和隐藏 div 框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10794362/

相关文章:

javascript - 使用 highcharts.js 改变背景颜色

jQuery CSS 字体系列不适用于引号

javascript - AngularJS 与 Bootstrap 选项卡冲突

jQuery 文本编辑器不起作用?

css - Masonry Bootstrap Columns(4) 除非存在至少 6 个元素,否则不会全部使用

javascript - 使用 jQuery 获取特定的点击项目

php - 奇怪的 anchor 标记行为

javascript - 无法根据两个日期在日期选择器中设置最大和最小范围

javascript - 当我发出新请求时,Ajax http 请求将以前的图像加载到轮播中

colors - Twitter Bootstrap 中的导航栏颜色