基于变量的Jquery显示/隐藏(不是切换)

7
在jQuery中(我目前使用的是1.11.4版本),是否有内置的帮助函数可以根据变量显示/隐藏元素?
例如,目前要根据复选框显示/隐藏某些内容,我会像这两个示例一样操作...
$("#myChk").on("click", function() {
  if ($(this).is(":checked")) {
    $("#otherEl").show();
  } else {
    $("#otherEl").hide();
  }
});

$("#myChk").on("click", function() {
  var $otherEl = $("#otherEl");
  ($(this).is(":checked") ? $otherEl.show() : $otherEl.hide());
});

有没有一个内置函数,我在文档中很容易找到它,可以实现类似于...

$("#myChk").on("click", function() {
  $("#otherEl").showOrHide($(this).is(":checked"))
});

我相信这里没有任何东西,但为了确保,我还是问了一下。
我知道.toggle(),但它基于元素的当前可见性,而不是外部变量。
(如果有人知道类似于.slideUp.slideDown的内容,那也很有用。)
1个回答

9
您只需要在文档中往下阅读即可。 .toggle() 允许您传递 true/false 来设置显示内容: http://api.jquery.com/toggle/#toggle-display 显示内容 类型:布尔值 使用 true 显示元素,false 隐藏元素。
因此,您可以将 $(this).is(":checked") 传递给它,例如:.toggle( $(this).is(":checked") )

我将使用重复问题的OP的评论...“好吧,所以我很蠢,在提问之前需要阅读文档。”感谢您的答案...我会在可以的时候标记为答案。 - freefaller
在我极为有限的辩护中,我阅读了第一个定义(.toggle( [duration ] [, complete ] )),并假设如果我传递一个布尔值,它将被视为 [duration]... 你完全正确,我没有继续查看其他定义。 - freefaller
1
@freefaller 不用担心;我们都会有这样的事情发生。 - j08691
如果您正在传递任何变量,请确保将其强制转换为布尔类型,.toggle(!!show),否则可能会传递undefined,然后它只会切换...祝您在之后找到错误的好运。 - estani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接