Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Jquery选中时,通过复选框更改背景颜色_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 使用Jquery选中时,通过复选框更改背景颜色

Javascript 使用Jquery选中时,通过复选框更改背景颜色,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我正在尝试更改带有复选框的div的背景色。我做了一些参考。我试图用“突出显示”来替换父级,因此我认为切换会起作用。取消选中复选框后,我希望背景颜色恢复正常(或删除“突出显示”)。非常感谢您的帮助。您正在为div设置内联背景色。这优先于通过CSS规则设置的任何属性 添加!重要信息到css文件中选中的类的背景色值,如下所示:您正在为div设置内联背景色样式。这优先于通过CSS规则设置的任何属性 添加!重要信息到css文件中选中的类的背景色值,如下所示:JSFIDLE中存在一些问题 第一个问题是,尽管

我正在尝试更改带有复选框的div的背景色。我做了一些参考。我试图用“突出显示”来替换父级
,因此我认为切换
会起作用。取消选中复选框后,我希望背景颜色恢复正常(或删除“突出显示”
)。非常感谢您的帮助。

您正在为div设置内联
背景色。这优先于通过CSS规则设置的任何属性


添加
!重要信息
到css文件中选中的
类的
背景色
值,如下所示:

您正在为div设置内联
背景色
样式。这优先于通过CSS规则设置的任何属性


添加
!重要信息
到css文件中选中的
类的
背景色
值,如下所示:

JSFIDLE中存在一些问题

第一个问题是,尽管编写了jQuery代码,但您还没有选择jQuery作为左侧的框架。这是JSFIDLE上代码特有的一个小问题,但很容易解决

第二个问题是在
元素上有内联样式,包括
背景色。该内联样式将优先于使用CSS类指定的任何
背景色
(除非指定为
!important
),因此即使您的代码正确地将
选中的
类添加到元素中,背景色也不会改变

最简单的解决方案是简单地更改CSS声明:

.checked {
    background-color: #ff0000 !important;
}
是JSFIDLE的更新版本,具有正常工作的功能(使用上面的建议)

但是,我建议您将内联样式和JavaScript事件处理程序移到它们自己的CSS声明中,这样您就不必指定
!重要信息
。这需要进行以下修改:

#holder > div {
    clear: both;
    padding: 0.5%;
    margin-bottom: 1px;
    border-bottom: 1px solid #eee;
    float: left;
    width: 96%;
    style: height: 16px;
    cursor: pointer;
    background-color: white; // added this to the existing CSS
}

#holder > div:hover { // this is new
    background-color: #fafafa; 
}
然后将
.checked
的CSS声明移动到这些声明的下方,以便它优先于
background color
属性


是JSFIDLE的另一个更新版本,使用CSS声明。

JSFIDLE中存在一些问题

第一个问题是,尽管编写了jQuery代码,但您还没有选择jQuery作为左侧的框架。这是JSFIDLE上代码特有的一个小问题,但很容易解决

第二个问题是在
元素上有内联样式,包括
背景色。该内联样式将优先于使用CSS类指定的任何
背景色
(除非指定为
!important
),因此即使您的代码正确地将
选中的
类添加到元素中,背景色也不会改变

最简单的解决方案是简单地更改CSS声明:

.checked {
    background-color: #ff0000 !important;
}
是JSFIDLE的更新版本,具有正常工作的功能(使用上面的建议)

但是,我建议您将内联样式和JavaScript事件处理程序移到它们自己的CSS声明中,这样您就不必指定
!重要信息
。这需要进行以下修改:

#holder > div {
    clear: both;
    padding: 0.5%;
    margin-bottom: 1px;
    border-bottom: 1px solid #eee;
    float: left;
    width: 96%;
    style: height: 16px;
    cursor: pointer;
    background-color: white; // added this to the existing CSS
}

#holder > div:hover { // this is new
    background-color: #fafafa; 
}
然后将
.checked
的CSS声明移动到这些声明的下方,以便它优先于
background color
属性


是JSFIDLE的另一个更新版本,使用CSS声明。

下面的答案建议添加!对你的CSS类很重要。请不要添加重要内容。最好在应用之前删除内联样式和内联javascript!重要属性。我只是尝试单击IE8中的检查,但它们没有检查…下面的答案建议添加!对你的CSS类很重要。请不要添加重要内容。最好在应用之前删除内联样式和内联javascript!重要属性。我只是尝试单击IE8中的检查,但它们没有检查…最好避免使用!这很重要,因为这可能会进一步导致问题。最好是从标记中删除内联样式,并使用:hover将其放入CSS中以获得效果。他的示例有太多错误:使用内联CSS、使用内联事件处理程序、使用
*
时使用隐式选择器(当使用
:checkbox
时)、使用javascript进行悬停而不是纯CSS。我刚刚谈到了他决定使用的逻辑有什么问题。这是一个公平的观点。不幸的是,示例中的许多错误可能会导致开发人员进一步陷入令人沮丧的问题,因为hack-y解决方案将变得越来越难以克服。最好避免使用!这很重要,因为这可能会进一步导致问题。最好是从标记中删除内联样式,并使用:hover将其放入CSS中以获得效果。他的示例有太多错误:使用内联CSS、使用内联事件处理程序、使用
*
时使用隐式选择器(当使用
:checkbox
时)、使用javascript进行悬停而不是纯CSS。我刚刚谈到了他决定使用的逻辑有什么问题。这是一个公平的观点。不幸的是,由于hack-y解决方案将越来越难以克服,示例中的许多错误可能会导致开发人员进一步陷入令人沮丧的问题。