【问题标题】:Uncheck an html checkbox with for label取消选中带有 for 标签的 html 复选框
【发布时间】:2013-09-22 12:35:35
【问题描述】:

我正在使用以下 html 来显示带有图像的复选框:

<div class="testClass">
<input id="111" name="compare_checkbox" type="checkbox" />                      
<label for="111">
    <i class="icon" aria-hidden="true"></i> <b>Compare</b>
</label>
</div>

我需要在某些情况下取消选中该复选框。我正在使用以下 jquery: $('#111')[0].checked = false;

如果我没有标签,这可以正常工作。当我有标签时,我在控制台(Chrome 或 Firefox)中没有收到任何错误,但复选框并没有取消选中。

【问题讨论】:

标签: javascript jquery html checkbox


【解决方案1】:

只是让您知道您的元素 ID 不能以数字开头。请参阅Element ID in HTML Document ~ Naming Question。希望这对你有帮助:)

解决方案:

<div class="testClass">
<input id="one" name="compare_checkbox" type="checkbox" />                      
<label for="one">
    <i class="icon" aria-hidden="true"></i> <b>Compare</b>
</label>
</div>

http://jsfiddle.net/tLsK7/

【讨论】:

    【解决方案2】:

    复选框状态最好使用 jQuery 的 prop 函数跨浏览器处理,无论复选框是否具有关联的 &lt;label&gt;

    $('#element').prop("checked", true); // Checks a checkbox.
    $('#element').prop("checked", false); // Unchecks a checkbox.
    

    【讨论】:

    • 你的 JavaScript 中一定有其他东西阻止它工作,因为它与存在的标签 in this fiddle. 一起工作
    • 另外,请记住,根据 HTML5 以下的所有内容,'111' 不是元素的有效 ID。除非您使用的是 HTML5,否则 ID 必须以字母开头。
    【解决方案3】:

    使用 for='111' 工作正常

    这里是http://jsfiddle.net/spaipalle/umAsw/3/

    $('#111').click(function(){
    if($('#111').is(":checked")){
            alert('checked');
            $('#111')[0].checked = false; // uncheck it
    }else{
            alert('unchecked');
    }
    });
    

    【讨论】:

      【解决方案4】:

      你试过改变元素的 id 吗?我认为 ID 不能仅由数字组成,或者至少不能以数字开头

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-07
        • 2022-10-15
        • 1970-01-01
        • 1970-01-01
        • 2011-01-11
        • 1970-01-01
        • 1970-01-01
        • 2021-09-16
        相关资源
        最近更新 更多