如何获取复选框的原始值?

时间:2011-10-04 21:49:00

标签: javascript jquery

编辑:好的,我不得不重做这个例子,因为我的第一个例子中没有出现问题

function CheckboxClick(checkbox, check) {
    this.checked = check;

    checkbox.click(function (event) {
        alert(this.checked);
    });
}


CheckboxClick($("#checkbox"), $("#checkbox").attr("checked"));

每次单击该复选框时,this.checked的值都会更改。我需要做些什么才能让它停止变化?它显然是通过引用分配,但我不知道如何获得原始值。我尝试过valueOf(),但这对我不起作用。

3 个答案:

答案 0 :(得分:2)

通过原语,我认为你的意思是html源代码中的值。

使用jquery 1.6,它有一个新的prop()方法,并更改了attr()的含义,以返回html源中属性的值。

http://api.jquery.com/attr/

  

从jQuery 1.6开始,.attr()方法为属性返回undefined   尚未设定。另外,不应该使用.attr()   普通对象,数组,窗口或文档。要检索和   更改DOM属性,使用.prop()方法。

http://api.jquery.com/prop/

  

属性和属性之间的区别非常重要   具体情况。在jQuery 1.6之前,有时会使用.attr()方法   在检索某些属性时考虑了属性值,   这可能会导致行为不一致。从jQuery 1.6开始,.prop()   方法提供了一种显式检索属性值的方法   .attr()检索属性。

答案 1 :(得分:0)

啊,问题是this不是你所期待的。 this实际上是指触发事件的复选框(DOM元素不是jquery)。因此,当您使用this.checked时,它等同于jquery statment $("#checkbox").attr("checked"),这就是您点击时更改的原因。

答案 2 :(得分:0)

我刚刚更改了这个。检查到var检查并且它有效。

注意:如果您使用的是jQuery 1.6及更高版本,则还必须使用相同的参数将.attr方法更改为.prop。