繁体   English   中英

使用jQuery检查加载时是否已选中复选框

[英]Check if checkbox is ALREADY checked on load using jQuery

我目前正在使用

 $("#some-box").click(function(){
     $("#main-box").toggle();
  });

除了复选框是保存复选框状态的页面的一部分之外,哪个效果很好。 如果复选框保存为勾选,则主框(在单击复选框时显示)在重新加载时隐藏,仅在单击复选框时才可见,现在这意味着“未选中”复选框(如预期的那样)切换)。

如果勾选了复选框,如何检查页面加载,在这种情况下是否自动触发切换?

这应该工作:

if ($("#some-box").is(':checked')){
    $("#main-box").show();
}

您可以使用.attr("checked").prop("defaultChecked")获取初始状态。 但是,我认为以下是更好的方法:

function update() {
    $("#main-box")[this.checked ? "hide" : "show"]();
    // as by @zerkms, this is a different way for writing it:
    // $("#main-box").toggle(this.checked);
}
update.call($("#some-box").click(update)[0]);

对于大多数事件,只需触发一次初始化即可,但这不适用于此 - 我们不希望自动点击(并更改)复选框。

.toggle()接受状态 - 因此您可以传递是否在特定调用上显示或隐藏元素:

$("#some-box").change(function(){
     $("#main-box").toggle($(this).is(':checked'));
  });

$('#some-box').trigger('change');

PS:你可以看到我建议使用change事件而不是click

在线演示: http//jsfiddle.net/R4Bjw/

如果选中该复选框,则使用is(':checked')测试并显示该框:

if ($('#some-box').is(':checked')) {
    $('#main-box').show();
}

然后按原样使用您的点击处理程序。

(function($) {
    var $somebox = $('#some-box'),
        $mainbox = $('#main-box');

    var toggleMain = function() {
        $mainbox.slideToggle();
    };

    if($somebox.is(':checked')) {
        toggleMain();
    }

    $somebox.on('click', toggleMain);
})(window.jQuery);

这是一个小提琴: http//jsfiddle.net/FX7Du/4/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM