11

我正在尝试使用两个外部按钮设置引导开关的状态,这是代码:

    <div>
        <input type="checkbox" name="switch" id="switch" value="1" data-on-text="ON" data-off-text="OFF" />
    </div>

    <div>
        <a id="set_on">ON</a>
        <a id="set_off">OFF</a>
    </div>

<script src="assets/jquery.min.js" type="text/javascript"></script>
<script src="assets/jquery-ui.min.js" type="text/javascript"></script>
<script src="assets/bootstrap.min.js" type="text/javascript"></script>
<script src="assets/bootstrap-switch.js"></script>
<script>
    $("#switch").bootstrapSwitch();
    $( "#set_on" ).click(function() {
        $("#switch").bootstrapSwitch('setState', true);
    });
    $( "#set_off" ).click(function() {
        $("#switch").bootstrapSwitch('setState', false);
    });
</script>

单击按钮 ON 或 OFF 开关不会切换其状态。在浏览器的控制台上,我读到了这个错误: TypeError: $(...).bootstrapSwitch is not a function

如果我尝试以这种方式在函数外部设置引导开关的状态:

<script>
    $("#switch").bootstrapSwitch();
    $("#switch").bootstrapSwitch('setState', false);
</script>

开关正确切换到 ON 状态。

4

4 回答 4

20

请用以下代码替换您的代码:

    <script type="text/javascript">
    $( document ).ready(function() {
    $("#switch").bootstrapSwitch();

    $( "#set_on" ).click(function() {
        $("#switch").bootstrapSwitch('state', true);
    });
    $( "#set_off" ).click(function() {
        $("#switch").bootstrapSwitch('state', false);
    });
    });
    </script>
于 2015-12-05T07:42:49.397 回答
4

尝试将代码包装在里面$( document ).ready(function() {});,以便在执行 jQuery 代码之前加载所有 DOM 元素,如下所示:

<script>
$( document ).ready(function() {
    $("#switch").bootstrapSwitch();
    $("#switch").bootstrapSwitch('setState', false);
});
</script>

尝试像这样在您的完整脚本中使用它 -

<script>

 $( document ).ready(function() {
    $("#switch").bootstrapSwitch();
    $( "#set_on" ).click(function() {
        $("#switch").bootstrapSwitch('setState', true);
    });
    $( "#set_off" ).click(function() {
        $("#switch").bootstrapSwitch('setState', false);
    });
});

</script>
于 2015-12-05T07:29:35.650 回答
0

你可以尝试使用bootstrapSwitch()类似这样的东西

$("[name = 'status']").bootstrapSwitch();
<input name = "status" type="checkbox">

于 2021-02-11T22:47:37.030 回答
0

刚刚为我的问题遇到了这个问题,我发现了一个没有记录的解决方案。

所以就这样做:

 $('#switch').prop('checked', true).trigger('change');
于 2021-09-10T01:40:10.443 回答