JQuery隐藏了复选框检查,但没有取消选中

时间:2014-10-13 13:26:20

标签: javascript jquery html checkbox

我为我正在处理的网站创建了一个替换img复选框。我可以成功将复选框设为check,但不能uncheck。我可以在Inspect中看到这种变化。

代码有什么问题?页面中没有错误。谢谢!

HTML是:

<input type="checkbox" id="AcceptTerms_check" name="AcceptTerms_check" style="display:none;">
<img class="chk-img" id="AcceptTerms" onclick="CheckboxClick(this);" src="../../../wp-content/uploads/misc/notselected.png">
<span id="ts-cs-accept">I have read and accepted the terms</span>.

JS是:

function CheckboxClick(element) {
    if(jQuery('input:checkbox[name=' + element.id + '_check]').is(":checked")) {
        jQuery('input:checkbox[name=' + element.id + '_check]').attr('checked','false');
        jQuery(element).attr("src", "../../../wp-content/uploads/misc/notselected.png");
    } else {
        jQuery('input:checkbox[name=' + element.id + '_check]').attr('checked','true');
        jQuery(element).attr("src", "../../../wp-content/uploads/misc/selected.png");
    };
};

1 个答案:

答案 0 :(得分:3)

始终使用prop复选框,因为您可以直接使用truefalse值。您还可以大量减少代码,而不是重复复杂的jQuery选择器:

function CheckboxClick(element) {
    var $checkbox = jQuery('input:checkbox[name=' + element.id + '_check]')
    if($checkbox.prop("checked")) {
        $checkbox.prop('checked', false);
        jQuery(element).attr("src", "../../../wp-content/uploads/misc/notselected.png");
    } else {
        $checkbox.prop('checked', true);
        jQuery(element).attr("src", "../../../wp-content/uploads/misc/selected.png");
    };
};

这可以进一步简化,但我希望你仍然能识别你的代码:)

e.g。你可以用以下方式切换它:

$checkbox.prop("checked", !$checkbox.prop("checked"));

更新...不要将基于属性的事件与jQuery(例如onclick=)一起使用,使用jQuery方式:

请尝试这种方式:http://jsfiddle.net/noy45sjg/1/

jQuery('.chk-img').click(function (e) {
    var element = jQuery(this);
    var $checkbox = jQuery('input:checkbox[name=' + this.id + '_check]');
    if($checkbox.prop("checked")) {
        $checkbox.prop('checked', false);
        jQuery(element).attr("src", "../../../wp-content/uploads/misc/notselected.png");
    } else {
        $checkbox.prop('checked', true);
        jQuery(element).attr("src", "../../../wp-content/uploads/misc/selected.png");
    }
});