【问题标题】:Deselect bootstrap 3 radio button on second click在第二次单击时取消选择 bootstrap 3 单选按钮
【发布时间】:2016-12-10 22:33:57
【问题描述】:

我想允许取消选择引导 btn-group 单选按钮,而不需要额外的按钮。

this 回答之后,我写了jsfiddle,但它对我不起作用。为什么? 我通过查看日志看到第二次单击时正在调用该方法。

$('body').on('click', '.btn.active', function(e){
    console.log("test");
    e.stopImmediatePropagation();
    $('input:radio[name="options"]').parent().removeClass("active");
})

HTML:

<div class="btn-group" data-toggle="buttons">
    <label class="btn btn-primary active">
        <input type="radio" name="options" id="option1" autocomplete="off" checked/>Radio 1 (preselected)
    </label>
    <label class="btn btn-primary">
        <input type="radio" name="options" id="option2" autocomplete="off">Radio 2
    </label>
    <label class="btn btn-primary">
        <input type="radio" name="options" id="option3" autocomplete="off">Radio 3
    </label>
</div>

【问题讨论】:

    标签: javascript jquery html css twitter-bootstrap


    【解决方案1】:

    这是一个有效的fiddle。出于某种原因,您必须同时调用 stopPropagate 和 preventDefault 才能使其工作。

    $('body').on('click', '.btn.active', function(e){
        e.stopImmediatePropagation();
        e.preventDefault();
        console.log(this, $('input:radio[name="options"]', this));
        $(this).removeClass('active');
        $('input:radio[name="options"]', this).prop('checked', false);
    })
    

    【讨论】:

    • 很奇怪。你能解释一下吗?
    • e.stopImmediatePropagation() 阻止执行引导单击事件,并且 e.preventDefault() 阻止检查单选按钮。显然检查单选按钮会导致事件冒泡并执行引导点击事件。
    猜你喜欢
    • 1970-01-01
    • 2013-11-22
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多