2012-09-05 3 views
0

Мне удастся выполнить изменение, когда я нажимаю на переключатель, но проблема в том, что при перезагрузке страницы выборы переключателя сохраняются, но изменения нет. Другими словами, если я нажму на кнопку # 1, это уменьшит непрозрачность определенных полей. Когда я вернусь на эту страницу, все поля имеют полную непрозрачность, и только после этого я снова нажимаю на переключатель, чтобы выполнить этот шанс.jQuery Вход Trigger Live Change

Вот мой код:

(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

Некоторые браузеры сохраняют то, что выбор, который вы выбрали для определенных кнопок на перезагрузку (это НЕ ГАРАНТИРОВАНО всегда работать или работать в любом браузере), но, безусловно, не сохранить вещи, как происходившие события. Другими словами, вам нужно сохранить свой выбор переключателя и ваш выбор непрозрачности одним из двух способов (или обоих), чтобы они сохранялись при перезагрузке 1.) HTML5 localStorage (не рекомендуется использовать файлы cookie для этого). 2) серверная сторона.

Ваш текущий код ничего не хранит - вам просто повезло в вашем случае, что ваш браузер случайно сохранил ваш выбор переключателя при перезагрузке.

EDIT: Так что вам не повезло с переключателями ... очень приятно! Если вы можете быть уверены, что переключатель остается включенным после перезагрузки, тогда да, вы можете проверить, проверено ли оно.

Предположим, вы точно знаете идентификатор переключателя, который хотите подтвердить, - и вы хотите знать, проверено ли оно или нет. Сделайте это при загрузке документа: $ ('# myradiobutton'). Is (': checked'); Вернет false, если не установлен, и true, если он установлен. Тогда вы можете использовать оператор if, чтобы сказать

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

Я должен уточнить, что я использую это в бэкэнде Wordpress, используя плагин ACF. Выбор радиокнопки всегда будет сохранен. Есть ли какой-либо способ для меня, после загрузки, проверить, какое значение имеет переключатель и установить непрозрачность, сохраняя при этом возможность смены триггера в реальном времени? – beefchimi

+0

О, конечно. Представьте, что вы точно знаете свой переключатель, который хотите проверить, - и вы хотите узнать, проверено ли оно или нет. Сделайте это при загрузке документа: $ ('# myradiobutton'). Is (': checked'); Вернет false, если не установлен, и true, если он установлен. Надеюсь это поможет! – sajawikio