Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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 更改DIV';s颜色基于子类/内容_Javascript_Jquery_Html - Fatal编程技术网

Javascript 更改DIV';s颜色基于子类/内容

Javascript 更改DIV';s颜色基于子类/内容,javascript,jquery,html,Javascript,Jquery,Html,我想使人1的背景色与人2的背景色不同 我尝试了这种方法,但没有成功: $('span.Message')。每个(函数(){ if($(this.find('span.person1')。长度>0){ $(“span.person1”).parent().css(“背景”、“黄色”); }否则{ $(“span.person1”).parent().css(“背景”、“红色”); } }); 姓名:嗨,你好吗? 姓名:好,你好吗? 您应该$(this)在if(){}else{}内部,而不是sp

我想使人1的
背景色与人2的背景色不同

我尝试了这种方法,但没有成功:

$('span.Message')。每个(函数(){
if($(this.find('span.person1')。长度>0){
$(“span.person1”).parent().css(“背景”、“黄色”);
}否则{
$(“span.person1”).parent().css(“背景”、“红色”);
}
});

姓名:嗨,你好吗?
姓名:好,你好吗?
您应该
$(this)
if(){}else{}
内部,而不是
span.person1
,否则您总是选择相同的元素,不管其内容如何

您只需在
each()
函数内部设置
$(this).css()
,并根据
find()
函数的长度使用三元运算符选择颜色,如下所示:

$('span.Message')。每个(函数(){
var bg=($(this.find('span.person1').length)?'yellow':'red';
$(this.css('background',bg);
});
span.Message{
显示:块;
高度:100px;
}

姓名:嗨,你好吗?
姓名:好,你好吗?
使用以下代码:

$('span.Message')。每个(函数(){
if($(this.find('span.person1')。长度>0){
$(this).closest('.Message').css(“背景”、“黄色”);
}
否则{
$(this).最近('.Message').css(“背景”,“红色”);
}
});

姓名:嗨,你好吗?
姓名:好,你好吗?
在生成新消息线程时触发事件时,在实例中调用函数rowColor()

 function rowColor(){$('.Message').each(function(i,v) {   if(i%2 == 0)
 {$(this).addClass("Person1");}
 else
 {$(this).addClass("Person2");}});}
将以下定义放入样式表中

.Person1{background-color:#e6f6f7}.Person2{background-color:#a0d8de}

您必须通过jQuery来实现这一点吗?你有没有理由不能在类
上有一些css。person2
背景:红色?为什么不为此使用普通CSS
.person1{…}和.person2{…}
@j08691因为查看jQuery中的尝试,OP希望更改
span.Message
的背景色,这取决于它是否包含
.person1
.person2
@j08691,因为它是div中的div,所以如果我更改背景色,它只会围绕文本而不是整个消息泡泡变化。“一个div中的一个div”?看起来更像是span中的span。对于类消息的n次迭代,此代码段应该可以正常工作。我希望这有助于我忘记提到的一件事,这是两个人之间正在进行的聊天,而您编写的脚本在页面加载时只运行一次,因此在更新后不会更改颜色。有一件事我忘了提到,这是两个人之间正在进行的聊天,您编写的脚本在页面加载时只运行一次,所以它在更新后不会改变颜色。@MustafaZubaidi这是一个单独的问题,没有包含在您的OP中,因此这确实回答了您发布的问题。有一件事我忘了提到,这是两个人之间正在进行的聊天,您编写的脚本在页面加载时只运行一次,所以它在更新后不会改变颜色。