jQuery Mobile - 单击时更改翻转开关

Posted

技术标签:

【中文标题】jQuery Mobile - 单击时更改翻转开关【英文标题】:jQuery Mobile - changing the flipswitch on click 【发布时间】:2014-04-22 18:56:47 【问题描述】:

我有一个禁用的翻转开关。单击翻转开关时,会出现一个弹出窗口,询问用户是否确定要更改翻转开关。如果他们点击是,那么他们将不得不重新回答几个问题。我希望能够更改翻转开关,回答问题,然后返回并再次更改翻转开关,重新回答问题......等等。由于某种原因,当我单击翻转开关时,它在第一次单击时工作,但第二次单击它会改变它从是到否(或相反)然后返回。它几乎就像它记录了它被点击了多少次一样。

Here is a fiddle to show the issue

这是我的代码:

$("#US_toggle").click(function() //flipswitch is clicked
  $('#US_Popup').popup('open'); //popup is opened
  $('#US_changeYes').click(function()
    if($("#US_toggle .ui-flipswitch").hasClass('ui-flipswitch-active'))                
      $("#US_toggle .ui-flipswitch").removeClass('ui-flipswitch-active');
    else
      $("#US_toggle .ui-flipswitch").addClass('ui-flipswitch-active');
    ;
  );
);

这里是html

<div id="US_toggle" class="floatRight">             
    <select name="US_flipswitch" id="US_flipswitch" data-role="flipswitch" data-theme="c" disabled="disabled">
      <option value="off">No</option>
      <option value="on">Yes</option>
    </select>               
</div>

【问题讨论】:

只是一个建议。它不会解决您的问题,但会简化您的代码。你可以使用$("#US_toggle .ui-flipswitch").toggleClass('ui-flipswitch-active')而不是整个hasClass if statment 您能否向我们展示您的 HTML 标记,或者更好地创建一个重现问题的小提琴? @NevilleNazerane 我尝试了你的建议,不幸的是它没有删除或添加课程。 @ezanker 我添加了 HTML。我会试着把小提琴放在一起。 @ezanker - fiddle created 【参考方案1】:

问题是每次启动弹出窗口时,您都将点击代码添加到 changeYes 按钮。您应该只在 div 点击之外添加一次:

更新FIDDLE

$("#US_toggle").click(function () 
    $('#US_Popup').popup('open');

);

$('#US_changeYes').click(function () 
    if ($("#US_toggle .ui-flipswitch").hasClass('ui-flipswitch-active')) 
        $("#US_toggle .ui-flipswitch").removeClass('ui-flipswitch-active');
     else 
        $("#US_toggle .ui-flipswitch").addClass('ui-flipswitch-active');
    ;
);

更新:与其切换类,不如切换选择值然后刷新翻转开关:

$('#US_changeYes').click(function () 
    var curVal = $("#US_flipswitch").val();
    curVal == "off" ? $("#US_flipswitch").val("on").flipswitch("refresh") : $("#US_flipswitch").val("off").flipswitch("refresh");
);

FIDDLE

【讨论】:

效果很好!非常感谢您解决了我的问题! 不客气。请查看我的更新答案,我认为切换选择值而不是切换类更好的代码...

以上是关于jQuery Mobile - 单击时更改翻转开关的主要内容,如果未能解决你的问题,请参考以下文章

更改flipswitch jquery mobile的活动状态

如何从代码中更改 jquery 移动翻转开关状态

如何从代码中更改jquery移动翻转开关状态

jQuery Mobile 列表视图:单击时更改值

JQuery mobile动态添加切换开关到listview

Jquery在单击按钮时更改切换开关CSS类