【问题标题】:oTree and JavaScript check if class is active (checked)oTree 和 JavaScript 检查类是否处于活动状态(选中)
【发布时间】:2018-12-02 17:16:27
【问题描述】:

当我运行这段代码时:

    <div id = "1-round" class="btn-group btn-group-toggle btn-lg " data-toggle="buttons" >
{% for checkbox in form.players_choice %}
    <label class="btn btn-primary rounded mr-3 active btn-lg 1-round" style="margin-bottom:8px;">
        <script>
           $('label').click( function() {
          $(this).addClass('btn-primary').removeClass('btn-default').siblings().removeClass('btn-primary').addClass('btn-default');
         if ($('#id_players_choice_0').is(':checked')) {
         x = id_players_choice_0.value};
         if ($('#id_players_choice_1').is(':checked')) {
         x = id_players_choice_1.value};
          alert(x);
         });
        </script>
        {{checkbox}}
    </label>
{% endfor %}
</div>

我仅在第二次或第三次按下按钮时才获得值(x 变量)。
有没有办法解决这个问题?
谢谢!

【问题讨论】:

    标签: javascript bootstrap-4 otree


    【解决方案1】:

    $('label') 选择器将选择已经是文档一部分的标签。此外,将单击处理程序放在循环中也不好,因为它将在多个元素上乘以相同的处理程序。将该脚本移动到文档末尾,就在结束 &lt;/body&gt; 标记之前。

    另外,请确保声明您的变量x,使其具有正确的范围。

    <div id = "1-round" class="btn-group btn-group-toggle btn-lg " data-toggle="buttons" >
    {% for checkbox in form.players_choice %}
        <label class="btn btn-primary rounded mr-3 active btn-lg 1-round" style="margin-bottom:8px;">
            {{checkbox}}
        </label>
    {% endfor %}
    </div>
    <script>
        $('label').click( function() {
            var x;
            $(this).addClass('btn-primary').removeClass('btn-default')
                   .siblings().removeClass('btn-primary').addClass('btn-default');
            if ($('#id_players_choice_0').is(':checked')) {
                x = id_players_choice_0.value;
            }
            if ($('#id_players_choice_1').is(':checked')) {
                x = id_players_choice_1.value;
            }
            alert(x);
        });
    </script>
    

    如果您不能保证在脚本执行之前所有标签都已创建,则使用事件委托:

        $(document).on('click', 'label', function() { // ...etc
    

    【讨论】:

    • 当标签已经是文档的一部分时?我认为这是我的问题。我应该使用其他选择器吗?
    • 我不明白第一个问题,但是您可以使用另一个选择器,当标签还没有(全部)存在时也可以使用:$(document).on('click', 'label', function() .... 标签是文档的一部分,当@ 987654327@ 循环已完成。
    猜你喜欢
    • 1970-01-01
    • 2020-01-11
    • 2019-12-10
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    • 2020-03-02
    相关资源
    最近更新 更多