小编的项目里有个需求,当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>
jqueryjavascript

解决方案 »

  1.   

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

  2.   

    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中$这个符号是什么意思。你的逻辑很混乱
      

  3.   

    不好意思,错了,1、var $test = $(".test").text(); 改成var test = $(".test").text(); 可以不改。变量可以明明为$test..
      

  4.   

    success所在DIV的class值不能修改,现有的条件只能通过判断文本来设置p_info的颜色。
      

  5.   

    $this  这个...这个...实在是理解不了,不知道怎么写成这样,$test 变量名被命名成这样子了,你要搞清楚$,它到底是干嘛的,有什么作用,出错了,都不知道是为什么,不出错下次看都不会区分,不小心还以为是个构造函数呢...
      

  6.   

    因为html里有多个class为test的DIV,所以不能用$(".test"),那样全部的p_info颜色都统一了,$this是我想到的一个含义词,指只有test为error的时候改变父辈元素的颜色,有什么更好的办法可以实现呢?
      

  7.   

    $(document).ready(function(){
        $(".test:contains('Error')").parent().siblings(".p_info").css("background-color","#FF0000");
    });
      

  8.   

    $(".test").text()的输出是"SuccessError"。所以永远不能等于Error。
    所以需要下面这样写:$(function(){$(".test").each(function() {    
        if($(this).text() == "Error"){
            $(this).parent().siblings(".p_info").css("background","#000");
        }
    });});