2016-08-24 40 views
4

因此,我们有一个复选框和与其关联的标签。 我需要通过单击标签切换复选框状态,如果单击身体其他任何位置,则取消选中它。 下面的代码的问题是,通过单击标签,复选框不能被取消选中。通过单击主体上的任意位置并单击其标签来切换复选框

$(function() { 
 
    "use strict"; 
 
    
 
    function uncheckBox() { 
 
    var isChecked = $("#cbox").prop("checked"); 
 
    if (isChecked) { 
 
     $("#cbox").prop("checked", false); 
 
    } 
 
    } 
 
    
 
    $("body").on("click", function() { 
 
    uncheckBox(); 
 
    }); 
 
    
 
    $("#cbox").on("click", function (e) { 
 
    e.stopPropagation(); 
 
    }); 
 
});
html, body { 
 
    margin: 0; 
 
    padding: 0; 
 
    height: 100%; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<input type="checkbox" id="cbox" value="checkbox"/> 
 
<label for="cbox">testbox</label>

回答

4

停止事件冒泡从标签也会发生,$("#cbox,label").click

$(function() { 
 
    "use strict"; 
 
    
 
    function uncheckBox() { 
 
    var isChecked = $("#cbox").prop("checked"); 
 
    if (isChecked) { 
 
     $("#cbox").prop("checked", false); 
 
    } 
 
    } 
 
    
 
    $("body").on("click", function() { 
 
    uncheckBox(); 
 
    }); 
 
    
 
    $("#cbox,label").on("click", function (e) { 
 
    e.stopPropagation(); 
 
    }); 
 
});
html, body { 
 
    margin: 0; 
 
    padding: 0; 
 
    height: 100%; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<input type="checkbox" id="cbox" value="checkbox"/> 
 
<label for="cbox">testbox</label>

+1

OK,它按预期工作!谢谢! –

相关问题