更改flipswitch jquery mobile的活动状态

Posted

技术标签:

【中文标题】更改flipswitch jquery mobile的活动状态【英文标题】:change active state of flipswitch jquery mobile 【发布时间】:2016-03-21 21:51:10 【问题描述】:

我正在尝试保存翻转开关的值,并且在重新加载 web 应用程序后,与状态具有相同值的选项应该处于活动状态。 IE。如果您选择<option id="v2" value="0">OFF</option>,则cookie status 的值为0,并且在重新加载页面后,翻转开关应显示OFF

现在每次重新加载后,第一个选项总是会自动选择,并且该值也会被选中。我该如何改变呢?

我的翻转开关:

<select id="status" name="status" data-role="flipswitch">
  <option id="v1" value="1">ON</option>
  <option id="v2" value="0">OFF</option>


</select>

我的 php sn-p:

    $t = time() + 60 * 60 * 24 * 1000;
        setcookie("status", $_POST['status'], $t);

我自己的尝试:

function state () 
 var statuse = <?php echo $_COOKIE['status']; ?>;

 if (statuse == 0) 
     $('#v2').addClass('ui-flipswitch-active');

 
 if (statuse == 1) 
     $('#v1').addClass('ui-flipswitch-active');

 
   

state();

调用php脚本的函数:

function status () 
        var stats = $("#status").val();
    $.ajax( url: 'status.php',

         data: status: stats,
         type: 'post',
         success: function(output) 
                      //alert(output);
                  
);
   

status();
setInterval(function()
    status() // this will run after every 5 seconds
, 5000);

【问题讨论】:

【参考方案1】:

我会尝试以下方法在页面加载时加载正确的开关状态:

<select id="status" name="status" data-role="flipswitch" class="">
  <option id="v1" value="1" <?php if (isset($_POST['status]') && $_POST['status'] == 1) echo 'class="ui-flipswitch-active"'; ?>>ON</option>
  <option id="v2" value="0" <?php if (!isset($_POST['status]') || $_POST['status'] == 0) echo 'class="ui-flipswitch-active"'; ?>>OFF</option>
</select>

如果您之后使用 javascript 执行此操作并且页面加载缓慢,您会得到“闪烁”,因为处理 javascript 需要一段时间。

还有 javascript:

$( "#status" ).change(function() 
    var stats = $("#status").val();
    $.ajax( url: 'status.php',
     data: status: stats,
     type: 'post',
     success: function(output) 
                  //alert(output);
              
    );
);  

这样当select的change事件被触发时,就会启动ajax查询。确保 php 脚本有 session_start();否则它可能无法正常工作。

【讨论】:

以上是关于更改flipswitch jquery mobile的活动状态的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Flipswitch 导致 Backbone 视图重新加载

Flipswitch小部件呈现为外部面板小部件中的下拉列表

jquery mobile更改复选框颜色

在 jQuery-Mobile 1.4.5 中更改列表视图颜色

jQuery-mobile-iscrollview 更改内容样式时不滚动显示:无显示:块或 jquery 显示和隐藏

更改设备方向上的图像 jquery-mobile