トグルボタンがあるサイトに機能を構築しようとしています。ボタンを押すとdivが表示され、ボタンが正常な場合はdivが非表示になります。div自体にも近い「X」があります。これをクリックすると、ボタンが通常の状態になります(つまり、押されていない状態になります)。
問題は、ボタンを無効にする方法がわからないことです。DOMを更新するクラスを削除できactive
ますが、ブートストラップ内のどこかから戻ってきます(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();
})();
ここには奇妙なことがたくさんあります:
- and関数で実行しようとし
addClass('active')
ましremoveClass('active')
たが、ブートストラップのどこかにあるトリガーが、クラスを削除した後もクラスを追加し続けました。showBox
hideBox
active
- メソッドは
toggle
ブートストラップで定義されており、私が理解できる限り、active
クラスを切り替えることを目的としていますが、(どこかで)それを非表示にし、アクティブ状態から切り替えることはできません。これはよくわかりません。 。