使用$('#foo')。val()== $('#foo')。is(':checked')永远不会以true结尾?

时间:2012-07-24 18:51:10

标签: javascript jquery

我如何比较这两个变量?

这是我的代码:

if ($('#<%= CheckBox1.ClientID %>').val() != $('#<%= CheckBox1.ClientID %>').is(':checked')) {
    /* ... */
}

总是返回true。

如何比较这两个值?我正在尝试捕获最后一个状态的复选框,看看它是否与当前状态相同。谢谢!

1 个答案:

答案 0 :(得分:0)

您对复选框和.val()函数的理解存在根本性错误。

<input id="test" type="checkbox" value="ValueToReturnIfChecked" name="WhateverToUseInYourPost" />

$("#test").val() //will return "ValueToReturnIfChecked.

$("#test").is(":checked") //will return true or false.

$("#test").prop("checked") //will return true or false.

$("#test").attr("checked") //will return checked or empty string

修改:额外澄清

我想我应该回答你的实际问题。答案是你不能将* .val()与* .is(“:checked”)进行比较,它们根本不同。如果您想跟踪过去的状态,您可以随时执行:

$("#test").on("click", function(){
     $this = $(this);
     if($this.data("priorState") == $this.is(":checked")){
          //Do something
     }else{
          //The following will inject the state into the checkbox so you can track it.
          $this.data("priorState", $this.is(":checked"))
     }

});