首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >is(':checked')/this.checked不工作

is(':checked')/this.checked不工作
EN

Stack Overflow用户
提问于 2018-02-16 19:13:04
回答 1查看 236关注 0票数 0

在发帖前尝试了几种解决方案,但似乎都不起作用,我肯定是做错了什么。

我的代码如下(简化)

代码语言:javascript
复制
<label>
    <input type="checkbox" id="menu-image-settings-container" value="1" name="..." checked="checked">
    Add image?
</label>

<div class="image-settings">show content if checked</div>

js代码

代码语言:javascript
复制
$( ".image-settings" ).hide();

var wrapper = $(this).closest('li.menu-item');      

if ( $('input#menu-image-settings-container').is(':checked') ) {
    wrapper.find('.image-settings').show();
    console.log('is-checked');
} else {
    wrapper.find('.image-settings').hide();
    console.log('is-not-checked');
}


$('input#menu-image-settings-container').change(function(){
    if(this.checked) {
        wrapper.find('.image-settings').show();
    } else {
        wrapper.find('.image-settings').hide();
    }
}); 

console.log说的是is-not-checked,而它显然在源代码中。我尝试过使用if ($('input#menu-image-settings-container').is(':checked')) {...},但它也不起作用,而通常情况下,它应该也能起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-16 20:12:59

首先,is(':checked')是一个正确的解决方案。原因如下:https://stackoverflow.com/a/7672031/9145243,您可以在这部分代码中看到您的console.log是有效的。

实际的问题在于这个结构:wrapper.find('.image-settings').hide();这段代码就是找不到你的.image-settings元素。

我用$('.image-settings')替换了它,只是为了向您表明问题就在这里。

代码语言:javascript
复制
$('input#menu-image-settings-container').change(function() {
    if($(this).is(':checked')) {
        $('.image-settings').show();
    } else {
        $('.image-settings').hide();
    }
}); 

在调试代码时,一种很好的做法是始终逐行使用console.log。然后你就会清楚地看到你的问题所在

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48825548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档