2016-08-24 43 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,它按預期工作!謝謝! –

相關問題