代码之家  ›  专栏  ›  技术社区  ›  jessegavin

是否存在类似jquery.toggle(布尔值)的内容?

  •  64
  • jessegavin  · 技术社区  · 14 年前

    我写了很多类似下面代码的东西。它基本上基于某种条件切换元素。

    在以下组成的示例中,条件为“如果 agree 复选框被选中,并且 name 字段不为空”。

    $("button").click(function() {
      if ($("#agree").is(":checked") && $("#name").val() != "" ) {
        $("#mydiv").show();
      } else {
        $("#mydiv").hide();
      }
    });
    

    我希望有某种jquery函数可以像这样工作。

    $("button").click(function() {
      var condition = $("#agree").is(":checked") && $("#name").val() != "" );
      $("#mydiv").toggle(condition);
    });
    

    外面有这样的东西吗?或者除了第一个例子,还有其他的方法可以用更少的 if-else-ish 方式?

    4 回复  |  直到 7 年前
        1
  •  81
  •   Funk Forty Niner    7 年前

    好吧,所以我是个白痴,在我问问题之前需要进行RTM。

    jQuery.toggle() 允许您开箱即用。

    $("button").click(function() {
      var condition = $("#agree").is(":checked") && $("#name").val() != "" );
      $("#mydiv").toggle(condition);
    });
    
        2
  •  8
  •   Richard June    14 年前

    首先,让我们看看我是否理解你想正确地做什么… 您希望查看复选框的状态(选中或不选中),并根据该值的状态隐藏或显示第二个DIV。

    定义此样式:

    .noDisplay {
        display:none;
    }
    

    使用此javascript:

    $("button").click(function() {
      $("#mydiv").toggleClass("noDisplay", $("#name").val() == "");
    });
    

    jquery关于它的文档可以在这里找到: http://api.jquery.com/toggleClass/

        3
  •  5
  •   John Fisher    14 年前

    你可以自己写函数。

    function toggleIf(element, condition) {
        if (condition) { element.show(); }
        else { element.hide(); }
    }
    

    然后这样使用:

    toggleIf($("button"), $("#agree").is(":checked") && $("#name").val() != "");
    
        4
  •  -1
  •   Yossi Shasho    11 年前

    如果 toggle() 不适合您(例如,因为它是动画),您可以编写一个小的jquery插件,如下所示:

    $.fn.toggleIf = function(showOrHide) {
      return this.each(function() {
        if (showOrHide) {
          return $(this).show();
        } else {
          return $(this).hide();
        }
      });
    };
    

    然后像这样使用:

    $(element).toggleIf(condition);