编辑:好的,我不得不重做这个例子,因为我的第一个例子中没有出现问题
function CheckboxClick(checkbox, check) {
this.checked = check;
checkbox.click(function (event) {
alert(this.checked);
});
}
CheckboxClick($("#checkbox"), $("#checkbox").attr("checked"));
每次单击该复选框时,this.checked的值都会更改。我需要做些什么才能让它停止变化?它显然是通过引用分配,但我不知道如何获得原始值。我尝试过valueOf(),但这对我不起作用。
答案 0 :(得分:2)
通过原语,我认为你的意思是html源代码中的值。
使用jquery 1.6,它有一个新的prop()
方法,并更改了attr()
的含义,以返回html源中属性的值。
从jQuery 1.6开始,.attr()方法为属性返回undefined 尚未设定。另外,不应该使用.attr() 普通对象,数组,窗口或文档。要检索和 更改DOM属性,使用.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。