2012-09-05 58 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