重置自举开关状态

时间:2015-04-09 06:33:58

标签: javascript jquery

首先,这是一个JsFiddle:http://jsfiddle.net/VTv2j/76/

这就是我想要发生的事情:

  1. 切换以不确定/中间状态开始(此作品)
  2. 当用户选择状态(此作品)
  3. 时,事件会触发
  4. 当使用点击 RESET 时,切换回到不确定/中间状态(这可行)
  5. 当用户选择任一状态(此操作不起作用)
  6. 时会触发事件

    发生的事情是,如果用户返回之前的状态,则不会发生事件。所以说它是YES,他们点击 RESET ,然后再次点击YES - 没有事件触发(但是如果之前是YES,则重置然后转为NO然后事件将触发)。 / p>

    我不知道如何处理这个问题。我尝试过破坏和重新创建交换机等事情:

    $('input[name=test]').bootstrapSwitch('destroy');
    $('input[name=test]').bootstrapSwitch();
    

    不幸的是无济于事。

    这对我来说很重要 - 我需要知道的是当用户从不确定状态移动到任何状态时。只要他们选择了某些东西,我就不会真正关心他们的选择。因此,如果有人能够想到一种不同类型的解决方法(可能会让它变得更容易),那肯定会受到欢迎。

    感谢任何帮助,这让我发疯。

1 个答案:

答案 0 :(得分:3)

以上是上述代码的工作版本:http://jsfiddle.net/byzwng4t/1/

function initializeSwitch(selector) {
    $(selector).bootstrapSwitch('destroy', true);
    $(selector).bootstrapSwitch({
        'state': null
    }); 
    $(selector).on('switchChange.bootstrapSwitch', function(event, state) {
        console.log('change event' + (new Date()).getTime());
    });
}

$(function() {
    initializeSwitch('input[name=test]');

    $('.reset').click(function() {
        initializeSwitch('input[name=test]');
    });
});

诀窍是在销毁交换机后再次绑定事件。