我有一个显示复选框的rails视图。当我点击复选框时,我的控制器中会调用一个rjs函数,它会根据复选框以前的状态来选中或取消选中该复选框。
视图中:
<%= check_box_tag 'checkbox_test' %>
<%= observe_field 'checkbox_test',
:url => { :action => :test_checkbox }
%>
在控制器中:
def test_checkbox
render :update do |page|
page << "
var checkBox = $('checkbox_test');
checkBox.checked = !checkBox.checked;
"
end
end
第一次单击复选框时,一切正常,调用函数,并更改选中的属性。问题出现后:如果我再次单击复选框,属性不会改变(但从视觉上看,复选框会改变…),因此不会调用函数"test_checkbox"。
我该如何解决这个问题?
根本不要使用该属性。只需使用checked
属性。这对几乎所有的属性和情况都是很好的建议。
var checkBox = $('checkbox_test');
checkBox.checked = !checkBox.checked;
在我看来,你需要$('checkbox_test')[0]。checked来测试检查性。
checked属性是本机DOM,而不是jQuery的一部分。