隐藏/显示带有布尔值的元素


109

我的代码中往往有很多

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

有没有更优雅的方式与javascript,jquery或下划线打包在一起?理想情况下,我想要看起来像这样的东西

$element.showOrHideDependingOn(shouldElementBeVisible)


@SpencerWieczorek碰巧提到了这个问题toggle,但这是一个不同的问题
Aakil Fernandes

Answers:


166

显然,您可以将布尔值传递给该toggle函数

$element.toggle(shouldElementBeVisible)

34
我建议您使用$element.toggle(!!shouldElementBeVisible)来防止意外击中其他“过载”之一,除非您当然非常确定该变量是布尔值。
Jeroen

7
更好的选择可能是$element.toggle(shouldElementBeVisible == true)
jox

"0"并且"false"被对待与false,因此我认为区别并不重要- 0如果您希望隐藏它,那将是不正确的,因为所有这些设置了动画时间,但仍然翻转可见性。
Tasgall

19

就在这里!

$element.toggle();

没有任何参数,toggle只需切换元素的可见性(我不是说visibility属性),并取决于元素的当前状态。

$element.toggle(display);

如果你调用toggle一个布尔参数,元件示,如果它是truehidden它是否false

资源


2
我将要标记为错误,然后我意识到最后一个API参考允许您设置布尔值而不是options对象。
Aakil Fernandes

下面几行:“没有参数,.toggle()方法仅切换元素的可见性”
Zach Spencer

2
那实际上与我想要的相反。我想让元素的当前状态无关紧要。状态应基于布尔变量。
Aakil Fernandes

@AakilFernandes那么该变量isShown$element是否可见无关?但是与元素无关的单独变量?
Spencer Wieczorek

是的,很抱歉,我可能应该重命名isShownshouldElementBeVisible使其更明显
Aakil Fernandes


0

该功能.toggle()改变了display元素的。

如果要更改visibility,我建议使用?:运算符。为此,在CSS上,将可见性设置为原始状态,然后在JS中简单地输入:

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

    $("#yourElement").css("visibility", checkboxChecked ? "visible" : "hidden");
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.