Bootstrap Switch手动切换事件

时间:2015-06-03 14:35:44

标签: jquery bootstrap-switch

我正在使用Bootstrap Switch,需要进行独占选择:有一堆切换器(未知数量),用户可以一次只转一个。

我做了类似的事情:

$('.switcher').on('switchChange.bootstrapSwitch', function() {
    $(".switcher[id!='"+selected_id+"']").each(function() {
        $(this).bootstrapSwitch('state', false);
    });
    $('#'+selected_id).bootstrapSwitch('state', current_state);
});

不幸的是,这会在无限循环上发送脚本(在状态更改时)。我认为这是因为在引擎盖下,Bootstrap Switch使用了trigger()函数,因此当switch状态变为false时,它会再次触发switchChange事件,依此类推。

通过触发:

我做了一个解决方法
$("#some-container .bootstrap-switch-container *").click(function() {
    // ...
});

相反。然而,这似乎是一个非常糟糕的解决方案。

有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

昨天遇到同样的问题。解决方案在documentation中找到。在您的情况下,您必须将第三个参数设置为false:

$('#'+selected_id).bootstrapSwitch('state', current_state, true);

当您不需要触发switchChange事件(-s)时,必须提供此参数(名为skip)并设置为true。

答案 1 :(得分:0)

您是否考虑过使用.off功能?您可以删除事件处理程序(导致无限循环),更改开关的状态,然后重新附加处理程序。