我有一个显示复选框的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
我第一次点击复选框时,一切正常,调用该函数并更改checked属性。问题出现在:如果我再次单击复选框,属性不会更改(但在视觉上复选框会更改...),因此不会调用函数“test_checkbox”。
我该如何解决这个问题?
答案 0 :(得分:2)
根本不要使用该属性。只需使用checked
属性即可。对于几乎每个属性和情况,这都是很好的建议。
var checkBox = $('checkbox_test');
checkBox.checked = !checkBox.checked;
答案 1 :(得分:1)
对我来说,你需要$('checkbox_test')[0] .checked来测试检查。
checked属性是本机DOM的东西,不是jQuery的一部分。