另一种写javascript的方法

时间:2011-10-21 17:32:40

标签: javascript jquery

编写以下内容的另一种简洁方法是什么?基本上它会根据条件切换2按钮的可见性。

$("#myCheckBox").click(function() {
    if (window.console && window.console.log)
        console.log("billing only checked? " + this.checked);
    if (this.checked) {
        $("#btnNext").hide();
        $("#btnFinish").show();
    }
    else {
        $("#btnNext").show();
        $("#btnFinish").hide();
    }
});

只是寻找一种更有效的方式?

7 个答案:

答案 0 :(得分:15)

您可以使用.toggle,它接受​​一个参数,指示是否应显示或隐藏元素:

$("#btnNext").toggle(!this.checked);
$("#btnFinish").toggle(this.checked);

如果从一开始就正确设置了可见性,您甚至不必传递参数:

$("#btnNext, #btnFinish").toggle();

我同意其他人的可读性。 .toggle本身可能仍然可以理解,但.toggle(!this.checked)可能会变得更难以理解。

答案 1 :(得分:1)

使用toggle()函数 - http://api.jquery.com/toggle/

答案 2 :(得分:1)

您可以使用.toggle()

$("#myCheckBox").click(function() {
    if (window.console && window.console.log)
        console.log("billing only checked? " + this.checked);
    $("#btnNext").toggle(!this.checked);
    $("#btnFinish").toggle(this.checked);
});

答案 3 :(得分:1)

你可以减少这个:

if (this.checked) {
    $("#btnNext").hide();
    $("#btnFinish").show();
}
else {
    $("#btnNext").show();
    $("#btnFinish").hide();
}

到此:

$("#btnNext").toggle(!this.checked);
$("#btnFinish").toggle(this.checked);

答案 4 :(得分:1)

假设他们从正确的showhide州开始,您可以执行以下操作。

$("#myCheckBox").click(function() {
  if (window.console && window.console.log) {
    console.log("billing only checked? " + this.checked);
  }
  $("#btnNext").toggle();
  $("#btnFinish").toggle();
}

答案 5 :(得分:1)

您可以使用.toggle()代替show / hide,然后就可以摆脱if / else构造。

答案 6 :(得分:0)

它可能不是100%有效 - 我相信你可以通过使用聪明的三元组合来缩小它(编辑:Felix Kling已经有一个很好的了) - 另一方面 ,即使对于完全不熟悉该项目的人来说,这种方式也是完全可读的。

我倾向于保持原样。