我有一个表单,根据用户的选择显示或隐藏元素。当表单验证失败时,我需要根据以前的选择在页面加载时显示或隐藏这些元素。
我的代码看起来有点像这样:
ready = ->
$(".radio-button").on "ready change", ->
value = $(this).val()
if value != true
$("#some-element").show();
else
$("#some-element").hide();
$(document).ready(ready)
$(document).on('page:load', ready)
更改处理程序工作正常,但就绪处理程序永远不会触发。我猜这与jquery绑定自己的处理程序之前的准备动作完成有关吗?
答案 0 :(得分:2)
将“ready”事件附加到.radio按钮选择器的目的是什么?我不太确定这是否有效。无论如何,请尝试以下方法。
ready = ($) ->
changeEvent = (e) ->
value = $(this).val()
if value is not true
$("#some-element").show()
else
$("#some-element").hide()
$(".radio-button")
.on("change", changeEvent)
.each -> $(this).change()
jQuery ready
这会将change事件绑定到选择器,然后立即为每个元素触发该事件。