小菜写了一段jquery没有达到预想的结果,烦请高手帮忙

TOYEAN 2013-06-13 04:01:55
小编的项目里有个需求,当class为test的文本为“Error”的时候,父元素的同辈元素“p_info”的颜色为红色,按照需求我写了以下代码,可是并没有达到预想的结果,不知道哪里错了,烦请高手帮忙。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>
<style type="text/css">
<!--
.p_info { width:100px; height:30px; background:#396; }
-->
</style>
<script type="text/javascript" src="http://www.csdn.net/js/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$(function(){
var $test = $(".test").text();
if($test == "Error"){
$this.parent().siblings(".p_info").css("background","#000");
}
});
</script>
</head>

<body>

<div class="post">
<div class="post_info">
<div class="p_info"></div>
<div class="p_test">
<div class="test">Success</div>
</div>
</div>
</div>

<div class="post">
<div class="post_info">
<div class="p_info"></div>
<div class="p_test">
<div class="test">Error</div>
</div>
</div>
</div>

</body>
</html>
...全文
105 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
UEAnswer 2013-06-13
  • 打赏
  • 举报
回复
$(".test").text()的输出是"SuccessError"。所以永远不能等于Error。 所以需要下面这样写:

$(function(){

$(".test").each(function() {    
    if($(this).text() == "Error"){
        $(this).parent().siblings(".p_info").css("background","#000");
    }
});

});
ZXY900213 2013-06-13
  • 打赏
  • 举报
回复
$(document).ready(function(){
    $(".test:contains('Error')").parent().siblings(".p_info").css("background-color","#FF0000");
});
TOYEAN 2013-06-13
  • 打赏
  • 举报
回复
因为html里有多个class为test的DIV,所以不能用$(".test"),那样全部的p_info颜色都统一了,$this是我想到的一个含义词,指只有test为error的时候改变父辈元素的颜色,有什么更好的办法可以实现呢?
  • 打赏
  • 举报
回复
$this 这个...这个...实在是理解不了,不知道怎么写成这样,$test 变量名被命名成这样子了,你要搞清楚$,它到底是干嘛的,有什么作用,出错了,都不知道是为什么,不出错下次看都不会区分,不小心还以为是个构造函数呢...
TOYEAN 2013-06-13
  • 打赏
  • 举报
回复
success所在DIV的class值不能修改,现有的条件只能通过判断文本来设置p_info的颜色。
final_xt 2013-06-13
  • 打赏
  • 举报
回复
引用 2 楼 final_xt 的回复:
1、var $test = $(".test").text(); 改成var test = $(".test").text(); 2、你有2个class为test的div..所以var $test = $(".test").text()是没有意义的 3、如果把上面那个success的div的class值换成别的话。可以用如下代码实现
$(function(){
	var test = $(".test").text();
	alert(test);
	if(test == "Error"){
		$(".test").parent().siblings(".p_info").css("background","#000");
	}
});
4、好好理解一下jquery中$这个符号是什么意思。你的逻辑很混乱
不好意思,错了,1、var $test = $(".test").text(); 改成var test = $(".test").text(); 可以不改。变量可以明明为$test..
final_xt 2013-06-13
  • 打赏
  • 举报
回复
1、var $test = $(".test").text(); 改成var test = $(".test").text(); 2、你有2个class为test的div..所以var $test = $(".test").text()是没有意义的 3、如果把上面那个success的div的class值换成别的话。可以用如下代码实现
$(function(){
	var test = $(".test").text();
	alert(test);
	if(test == "Error"){
		$(".test").parent().siblings(".p_info").css("background","#000");
	}
});
4、好好理解一下jquery中$这个符号是什么意思。你的逻辑很混乱
  • 打赏
  • 举报
回复
$(function(){ var $test = $(".test").text(); if($test == "Error"){ $(".test").parent().siblings(".p_info").css("background-color","#000"); } });

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧