2014-01-23 76 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