首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果选中或未选中,则更改复选框的父元素css

如果选中或未选中,则更改复选框的父元素css
EN

Stack Overflow用户
提问于 2009-11-27 19:26:47
回答 6查看 3.7K关注 0票数 2

基本上,我在td元素中有一个复选框,我希望它在复选框被选中时有一种背景颜色,在复选框未被选中时有另一种背景颜色。所以换句话说,我想让它突出显示它是否被选中。

我尝试使用与这里相同的解决方案:Jquery toggle event is messing with checkbox value

但由于某些原因,我不能让它工作。

代码语言:javascript
运行
复制
    $(document).ready(function(){
    $("input:checkbox").change(function() {
        if($(this).attr("checked") === "true") {
            // CHECKED, TO WHITE
            $(this).parent().css({"background" : "#ffffff", "-moz-border-radius" : "5px"});
            return;
        }
        //NOT CHECKED, TO GREEN
        $(this).parent().css({"background" : "#b4e3ac", "-moz-border-radius" : "5px"});
    });
});

它确实添加了绿色背景色,但不会删除它。如果我保持复选框处于选中状态,刷新,td将恢复为白色,一旦再次单击复选框,取消选中,td的背景将变为绿色。

我还是个新手,不知道这里可能出了什么问题,我已经尝试了几个小时了。这么简单的事情,但就是不能让它工作。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-11-27 19:33:00

变化

代码语言:javascript
运行
复制
if($(this).attr("checked") === "true")

代码语言:javascript
运行
复制
if($(this).attr("checked") === true)

由于您正在使用严格相等进行比较,因此两种数据类型必须相同。

代码语言:javascript
运行
复制
typeof ( $(this).attr ( "checked" ) )

将让您知道它是boolean类型,并且您正在将其与字符串进行比较。

有关更多信息,请参阅Comparison Operators

票数 2
EN

Stack Overflow用户

发布于 2009-11-27 19:41:56

有一种更好的方法来查看复选框是否已被选中:

代码语言:javascript
运行
复制
$(this).is(':checked')

它更健壮一些。

票数 4
EN

Stack Overflow用户

发布于 2009-11-27 20:18:34

if ($(This).attr(“”) === "true")

attr不读取HTML属性。这样做是有欺骗性的。如果它读取了属性,则checked的字符串值将为'checked',而不是'true'。但它没有做到这一点。

它实际做的是读取JavaScript对象属性,只是在它们不同的几个地方使用属性名而不是属性名。checked属性为您提供了一个布尔值,因此无需将其与任何内容进行比较,您只需这样说:

代码语言:javascript
运行
复制
if ($(this).attr('checked'))

或者,更简单地说,完全等效:

代码语言:javascript
运行
复制
if (this.checked)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1808198

复制
相关文章

相似问题

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