Javascript 如何获取复选框的基本值?

Javascript 如何获取复选框的基本值?,javascript,jquery,Javascript,Jquery,编辑:好的,我必须重做这个例子,因为这个问题在我的第一个例子中没有出现 function CheckboxClick(checkbox, check) { this.checked = check; checkbox.click(function (event) { alert(this.checked); }); } CheckboxClick($("#checkbox"), $("#checkbox").attr("checked")); 每次

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

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

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


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

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

我想你指的是html源代码中的值

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

从jQuery1.6开始,.attr()方法返回未定义的属性 这还没有确定。此外,不应在上使用.attr() 普通对象、数组、窗口或文档。取回 更改DOM属性时,请使用.prop()方法

属性和属性之间的差异在应用程序中可能很重要 具体情况。在jQuery1.6之前,有时使用.attr()方法 检索某些属性时考虑了属性值, 这可能会导致不一致的行为。从jQuery1.6开始,.prop() 方法提供了一种显式检索属性值的方法,而 .attr()检索属性


啊,问题是,
这个
不是你所期望的
这实际上是指触发事件的复选框(DOM元素不是jquery)。因此,当您使用
this.checked
时,它相当于jquery语句
$(“#checkbox”).attr(“checked”)
,这就是为什么在单击时它会更改的原因。

我刚刚将此.checked更改为var checked,并且它可以工作


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

您的函数末尾缺少一个
。哦,我没注意到。是的,我在飞行中写的。我遇到的问题是一个更复杂的函数,它会把我要做的事情弄得一团糟。我猜这是一个复制错误。添加后,我用prop和attr运行了它,它们按预期工作(bool没有改变):嗯,你说得对。我不得不重做这个例子,使之更接近我最初复制这个问题时所做的。这不是总是提醒“未定义”吗?