更改状态时,Bootstrap switchChange事件仍然触发

时间:2014-10-01 20:31:58

标签: javascript jquery twitter-bootstrap

我在下面有这个开关:

<input id="upperLightSwitch" type="checkbox"  checked data-size="mini">

通过这个,$(document).ready中的switchChange(on change)事件在通过点击它来改变开关状态时触发。

$('#upperLightSwitch').on('switchChange.bootstrapSwitch', function (event, state) {
    sendStateToArduino("upperLight");
    updateLightState("upperLight",state);
}); 

我的问题是当我从数据库中检查一个值并且它是0.我将切换开关状态设置为false并将第3个参数设置为false,表示在更改时不触发事件,但事件仍然触发因为正在执行上述事件中的两种方法。

引自Bootsrap网站:

  

$(&#39; #toggle-state-switch&#39;)。bootstrapSwitch(&#39; state&#39;,false,false); //将状态设置为关闭,不要触发switchChange事件

我正在使用的那个

$('#upperLightSwitch').bootstrapSwitch('state', false,false );

在事件代码之前,我调用的方法是在所有内容加载时检查数据库的值。

我错过了什么?

编辑:Bootstrap switch link

2 个答案:

答案 0 :(得分:4)

最后一个参数应为true而不是false,如下所示禁用事件触发

$('#upperLightSwitch').bootstrapSwitch('state', false,true );

答案 1 :(得分:0)

你不能用“开箱即用”的javascript(方法)做到这一点,但有一个非常简单的解决方法!

这就是我做的......(效果很好!)

准备好文档

$(document).ready(function () {

//declare a flag.
$.onC = 0;

然后当您设置切换/切换...

function yourFunction()
{
    //first set the flag.
    $.onC = 1;
    $(th).bootstrapToggle('off');
}

现在处于更改功能...

$(".onOff").on("change", function (e) {

//check the flag and reset it
if ($.onC == 1)
{
    $.onC = 0;
    return;
}