2014-01-23 73 views
0

我有一个表单根据用户所做的选择显示或隐藏元素。当表单验证失败时,我需要这些元素根据以前的选择在页面加载时显示或隐藏。使用jQuery/Coffeescript触发页面加载功能

我的代码看起来有点像这样:

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绑定自己的处理程序之前准备好的动作完成有关?

回答

2

将“ready”事件附加到.radio-button选择器的目的是什么?我不太确定这是否有效。无论如何,请尝试以下操作。

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 

这会将更改事件绑定到选择器,然后立即为每个元素触发该事件。

+0

目的是根据以前的输入(即,当表单未通过验证时)在页面加载时显示或隐藏元素。我最终不得不声明一个函数作为变量并使用$(“。element”).ready(var_function).change(var_function) - 这并不算太坏,但它意味着必须将我的代码分开。 – Ger