Jquery 必须单击li标记中的复选框两次才能取消选中

Jquery 必须单击li标记中的复选框两次才能取消选中,jquery,checkbox,twitter-bootstrap-3,drop-down-menu,checked,Jquery,Checkbox,Twitter Bootstrap 3,Drop Down Menu,Checked,有人能帮我吗,当在一个有点击事件的li中时,如何停止复选框被选中两次?我试图添加e.stopPropagation函数,但它不起作用 <div class="dropdown"> <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"

有人能帮我吗,当在一个有点击事件的li中时,如何停止复选框被选中两次?我试图添加e.stopPropagation函数,但它不起作用

<div class="dropdown">
      <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
        Obor
        <span class="caret"></span>
      </button>
      <ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
        <li class="dropdown-submenu"><a tabindex="-1" href="#">Automotive   </a>
            <ul class="dropdown-menu">
    <li class="small" data-value="option2" tabIndex="-1"><input type="checkbox" checked/>&nbsp;Automobily   </li>
    <li class="small" data-value="option3" tabIndex="-1"><input type="checkbox" checked/>&nbsp;Nákladní auta    </li>
    <li class="small" data-value="option4" tabIndex="-1"><input type="checkbox" checked/>&nbsp;Autobusy </li>
    <li class="small" data-value="option5" tabIndex="-1"><input type="checkbox" checked/>&nbsp;Prodej ojetých vozů  </li>
    <li class="small" data-value="option6" tabIndex="-1"><input type="checkbox" checked/>&nbsp;Komponenty   </li>
    <li class="small" data-value="option7" tabIndex="-1"><input type="checkbox" checked/>&nbsp;Alternativní pohony  </li>
            </ul></li></ul></div>

您的
选项
表示选中的
复选框
为空(即使您的所有复选框都已选中)。
要解决此问题,应在
选项
变量中放入选中复选框的所有
li
父项的值

您可以使用此选项来执行此操作:

options = $("input[type='checkbox']:checked").map(function() {
    return $(this).parent('li').data('value')
}).get();
下面是它在代码中的外观:
var选项=[];
选项=$(“输入[type='checkbox']:选中”).map(函数(){
返回$(this).parent('li').data('value'))
}).get();
$('.dropdown menu.small')。打开('单击',函数(事件){
var$target=$(event.currentTarget),
val=$target.attr('data value'),
$inp=$target.find('input'),
idx;
if((idx=options.indexOf(val))>-1){
选项。拼接(idx,1);
setTimeout(函数(){$inp.prop('checked',false)},0);
}否则{
选项。推送(val);
setTimeout(函数(){$inp.prop('checked',true)},0);
}
$(event.target).blur();
console.log(选项);
返回false;
});

双簧管
    • 汽车 Nákladníauta 汽车
    • Prodej-ojetých-vozů
    • Komponenty
    • 可选
options = $("input[type='checkbox']:checked").map(function() {
    return $(this).parent('li').data('value')
}).get();