2012-09-05 87 views
0

我單擊單選按鈕時成功執行更改,但問題是,當我重新加載頁面時,單選按鈕選擇被保留,但更改不是。換句話說,如果我點擊單選按鈕#1,它將降低某些字段的不透明度。當我回到這個頁面時,所有的字段都是完全不透明的,直到我再次單擊單選按鈕,它纔會執行這個機會。jQuery輸入觸發器實時更改

這裏是我的代碼:

(function($) { 

    // Document Ready 
    $(document).ready(function() { 

     // trigger change on the radio list to show selected field 
     $('#acf-feature_slide ul.radio_list li label input').trigger('change'); 

    }); 

    // Content Type change 
    $('#acf-feature_slide ul.radio_list li label input').live('change', function() { 

     // vars 
     var value = $(this).val(); 

     // show the selected field 
     if(value == "internal") { 
      $(this).parentsUntil('tr').find('div.row-layout-field').eq(3).css('opacity', '1.0'); 
      $(this).parentsUntil('tr').find('div.row-layout-field').eq(4).css('opacity', '0.2'); 
     } 
     else if(value == "external") { 
      $(this).parentsUntil('tr').find('div.row-layout-field').eq(3).css('opacity', '0.2'); 
      $(this).parentsUntil('tr').find('div.row-layout-field').eq(4).css('opacity', '1.0'); 
     } 
     else if(value == "none") { 
      $(this).parentsUntil('tr').find('div.row-layout-field').eq(3).css('opacity', '0.2'); 
      $(this).parentsUntil('tr').find('div.row-layout-field').eq(4).css('opacity', '0.2'); 
     } 
     else { 
      $(this).parentsUntil('tr').find('div.row-layout-field').eq(3).css('opacity', '1.0'); 
      $(this).parentsUntil('tr').find('div.row-layout-field').eq(4).css('opacity', '1.0'); 
     } 

    }); 

})(jQuery); 

任何幫助是極大的讚賞。

感謝,

+0

考慮使用'on'作爲'live'在jQuery v1.7中被棄用了。 http://api.jquery.com/on/ – yoshi

+0

你以哪種方式重新加載頁面?它是一個「快速刷新」(通常熱鍵「F5」),或者你也隨着它清理緩存('shift + F5')。在開發過程中,我推薦後者。 – yoshi

回答

0

一些瀏覽器將保留您在重裝挑選什麼樣的選擇。某些按鈕(它不能保證始終工作或在每個瀏覽器中運行),但絕對不會挽留之類的觸發事件。換句話說,您需要以2種方式之一(或兩種)存儲您的單選按鈕選項和您的不透明度選擇,以便它們堅持重新加載1.)HTML5 localStorage(不建議使用cookie)2)服務器端。

您目前的代碼不會存儲任何內容 - 您只是幸運的在您的情況下,您的瀏覽器在重新加載時碰巧保留了您的單選按鈕選項。

編輯:所以你沒有幸運的單選按鈕......非常好!如果可以確定單選按鈕在重新加載時保持選中狀態,則是的,您可以驗證它是否被檢查。

假設您確切知道您要驗證的單選按鈕的ID,並且您想知道它是否被選中。對你的文檔加載:$('#myradiobutton')。is(':checked');如果未選中,將返回false;如果選中,則返回true。然後你可以使用if語句來說

if($('#myradiobutton').is(':checked')){ 
    dothis(); 
} 
+0

我應該說明我在Wordpress後端使用ACF插件。單選按鈕的選擇將始終保留。有什麼辦法讓我在加載時檢查一下單選按鈕的值,並設置不透明度,同時仍允許實時觸發器更改? – beefchimi

+0

絕對是。假裝你確切地知道你想驗證的單選按鈕 - 並且你想知道它是否被選中。對你的文檔加載:$('#myradiobutton')。is(':checked');如果未選中,將返回false;如果選中,則返回true。希望這可以幫助! – sajawikio