要素をブール値で非表示/表示


109

私はコードにこれらの多くを含める傾向があります

if(shouldElementBeVisible)
    $element.show()
else
    $element.hide()

javascript、jquery、またはアンダースコアでパッケージ化されたよりエレガントな方法はありますか?理想的にはこのようなものが欲しい

$element.showOrHideDependingOn(shouldElementBeVisible)


@SpencerWieczorekその質問はたまたま参照toggleですが、それは別の質問です
Aakil Fernandes

回答:


166

どうやらあなたはtoggle関数にブール値を渡すことができます

$element.toggle(shouldElementBeVisible)

34
もちろん、変数がブール値であることが確実でない限り、他の「オーバーロード」の1つに誤ってヒット$element.toggle(!!shouldElementBeVisible)しないように使用することをお勧めします。
Jeroen、

7
より良いオプションがあります$element.toggle(shouldElementBeVisible == true)
jox

"0"そして、"false"は非常に異なる扱われfalseさえ-私はその区別は実際的な問題はないと思うので、とにかく0あなたはそれがそれらのセットアニメーション時間のすべてが、それでもフリップ視界いるので、非表示にしたい場合は正しくないだろう。
Tasgall 2017年

19

はいあります!

$element.toggle();

パラメータなしでtoggle、要素の可視性を切り替えるだけで(visibilityプロパティを意味するわけではありません)、要素の現在の状態に依存します。

$element.toggle(display);

あなたが呼び出す場合toggle、ブールパラメータで、要素は、それがある場合に示されているtruehidden、それがある場合false

ソース


2
私はこれを間違ってマークしようとしていたところ、最後のAPIリファレンスではオプションオブジェクトの代わりにブール値を設定できることに気づきました。
アーキルフェルナンデス2015

その下の数行:「パラメーターがない場合、.toggle()メソッドは単純に要素の可視性を切り替えます」
Zach Spencer

2
それは実際に私が欲しかったものの反対です。要素の現在の状態を無関係にしたかったのです。状態はブール変数に基づく必要があります。
アーキルフェルナンデス、2015

@AakilFernandesでは、変数isShown$element表示されているかどうかに関係ありませんか?しかし、要素に関連しない別の変数ですか?
Spencer Wieczorek 2015年

はい、申し訳ありませんが、わかりやすくするために名前isShownを変更する必要があるとshouldElementBeVisible
思います。AakilFernandes、2015


0

関数は要素のを.toggle()変更しdisplayます。

変更したい場合はvisibility、代わりに?:演算子を使用することをお勧めします。これを行うには、CSSで可視性を元の状態に設定し、JSで次のように指定します。

    var checkboxChecked = $("#yourCheckbox").(":checked");

    $("#yourElement").css("visibility", checkboxChecked ? "visible" : "hidden");
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.