Javascript 为什么jQuery函数toggleClass()不起作用?
我想让按钮改变它的颜色,如果它是绿色的话就变成红色,如果它是红色的话就变成绿色。所以我使用toggleClass来实现它。Javascript 为什么jQuery函数toggleClass()不起作用?,javascript,jquery,Javascript,Jquery,我想让按钮改变它的颜色,如果它是绿色的话就变成红色,如果它是红色的话就变成绿色。所以我使用toggleClass来实现它。 问:为什么它不起作用?几乎可以肯定它起作用了,但是在您发布的代码中没有针对类背景的CSS规则。该函数用于从元素的类列表中添加/删除条目,而不是直接操作样式对象特性 如果您确实从.toggleClass切换到.css,您会发现立即将属性从一个值切换到另一个值不会产生明显的效果。浏览器将有效地忽略第一次更新。几乎可以肯定它正在工作,但是在您发布的代码中没有针对类背景的CSS规则
问:为什么它不起作用?几乎可以肯定它起作用了,但是在您发布的代码中没有针对类背景的CSS规则。该函数用于从元素的类列表中添加/删除条目,而不是直接操作样式对象特性
如果您确实从.toggleClass切换到.css,您会发现立即将属性从一个值切换到另一个值不会产生明显的效果。浏览器将有效地忽略第一次更新。几乎可以肯定它正在工作,但是在您发布的代码中没有针对类背景的CSS规则。该函数用于从元素的类列表中添加/删除条目,而不是直接操作样式对象特性
如果您确实从.toggleClass切换到.css,您会发现立即将属性从一个值切换到另一个值不会产生明显的效果。浏览器将有效地忽略第一次更新。您正在使用切换而不是类中的规则更改类名。但您可以通过添加内联样式来实现它,如:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="../jquery/jquery.js"></script>
<style type="text/css" rel="stylesheet">
#btn {
background: green;
color: #fff;
padding: 15px;
font-size: 24px;
font-weight: bold;
}
</style>
</head>
<body>
<script>
$(() => {
$("#btn").click(() => {
if ($("#btn").hasClass("green")) {
$("#btn").css("backgroundColor", "red");
}
else if ($("#btn").hasClass("red")) {
$("#btn").css("backgroundColor", "green");
}
});
});
</script>
<button id="btn">Button</button>
</body>
</html>
$ => {
$btn.clickfunction{
const bgColor=this.style.backgroundColor;
$this.cssbackgroundColor,bgColor==“绿色”?红色:绿色;
};
};
btn{
颜色:fff;
填充:15px;
字体大小:24px;
字体大小:粗体;
}
按钮您正在使用toggle更改类名,而不是类中的规则。但您可以通过添加内联样式来实现它,如:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="../jquery/jquery.js"></script>
<style type="text/css" rel="stylesheet">
#btn {
background: green;
color: #fff;
padding: 15px;
font-size: 24px;
font-weight: bold;
}
</style>
</head>
<body>
<script>
$(() => {
$("#btn").click(() => {
if ($("#btn").hasClass("green")) {
$("#btn").css("backgroundColor", "red");
}
else if ($("#btn").hasClass("red")) {
$("#btn").css("backgroundColor", "green");
}
});
});
</script>
<button id="btn">Button</button>
</body>
</html>
$ => {
$btn.clickfunction{
const bgColor=this.style.backgroundColor;
$this.cssbackgroundColor,bgColor==“绿色”?红色:绿色;
};
};
btn{
颜色:fff;
填充:15px;
字体大小:24px;
字体大小:粗体;
}
按钮使用该方法是完全正确的 但是参数是一个由空格分隔的类名组成的字符串 当然,您必须在样式表中定义这些类规则 文件 btn{ /*背景:绿色*/ 颜色:fff; 填充:15px; 字体大小:24px; 字体大小:粗体; } 瑞德先生{ 背景色:红色; } 格林先生{ 背景颜色:绿色; } $ => { $btn.click=>{ $btn.toggleClassred-green; }; }; 按钮
使用这种方法是完全正确的 但是参数是一个由空格分隔的类名组成的字符串 当然,您必须在样式表中定义这些类规则 文件 btn{ /*背景:绿色*/ 颜色:fff; 填充:15px; 字体大小:24px; 字体大小:粗体; } 瑞德先生{ 背景色:红色; } 格林先生{ 背景颜色:绿色; } $ => { $btn.click=>{ $btn.toggleClassred-green; }; }; 按钮
我想你在这里找的是.css而不是.toggleClass,考虑到你使用的参数,你的css特别是没有考虑任何类。我想你在这里找的是.css而不是.toggleClass,考虑到你使用的参数,我试图声明两个类:.green和.red,并为它们中的每一个设置背景属性,然后将它们与toggleClass一起使用。但它也不起作用。正如我所说的,进行背靠背的更改不会产生明显的效果。浏览器不会根据每次更改更新视图。您的意思是我不能做我想做的事情或做什么?或者我需要使用.css而不是.toggleClass?再说一次,也许我没有明白你想说的,对不起,也许你可以解释一下你想做什么。如果希望视图从一种颜色闪烁到另一种颜色,则需要使用计时器。我尝试声明了两个类:.green和.red,并将background属性设置为它们中的每一个,然后将它们与toggleClass一起使用。但它也不起作用。正如我所说的,进行背靠背的更改不会产生明显的效果。浏览器不会根据每次更改更新视图。您的意思是我不能做我想做的事情或做什么?或者我需要使用.css而不是.toggleClass?再说一次,也许我没有明白你想说的,对不起,也许你可以解释一下你想做什么。如果希望视图从一种颜色闪烁到另一种颜色,则需要使用计时器
更新相同的css属性后,后一个属性将生效。我这样做:我检查class.green是否由第一个if语句中的hasClass函数设置为btn,如果是:$btn.cssbackground,red;。然后在elseif语句中,我检查class.red是否由hasClass设置为btn,如果设置为:$btn.cssbackground,green;对这就是我使用if语句的原因if语句在哪里?我在前面的评论中已经描述了我是如何执行此操作的。如果您放置多个语句更新同一css属性,则后一个将生效。我这样做:我检查class.green是否由第一个if语句中的hasClass函数设置为btn,如果是这样:$btn.cssbackground,red;。然后在elseif语句中,我检查class.red是否由hasClass设置为btn,如果设置为:$btn.cssbackground,green;对这就是我使用if语句的原因if语句在哪里?我在前面的评论中已经向您描述了我是如何做到这一点的