2

我有以下 html 脚本:

<ul>
<li class="container">
<div class="age">24</div>
<div class="married">no</div>
</li>

<li class="container">
<div class="age">27</div>
<div class="married">yes</div>
</li>

<li class="container">
<div class="age">56</div>
<div class="married"><!--empty--></div>
</li>

<li class="container">
<div class="age">34</div>
<div class="married">no</div>
</li>
</ul>

我希望只有li包含 a 的元素no才能div.married使用 Jquery 获得绿色背景。

我不明白为什么这段代码不起作用。我如何获得预期的结果?

4

5 回答 5

5

试试这个:

$(".container .married").filter(function() {
    return $(this).text() == "no";
}).closest('.container').css('background-color', 'green');

示例小提琴

于 2013-01-07T14:18:14.197 回答
2

试试这个:

$(function(){
  $(".married").each(function() {
    if ($(this).text() === 'no') {
      $(this).closest('li').addClass('highlight')
    }

  });   
});

和 CSS 类

.highlight {
   background: green;
}

只要有可能,最好始终远离 javascript 的 css

示例:http: //jsbin.com/irubap/1/edit

于 2013-01-07T14:18:57.560 回答
2

你有一个错误的;后,"green"虽然你仍然不会得到你想要的。

你也可以;

$(".married:contains(no)").parent().css(...)
于 2013-01-07T14:19:44.803 回答
1

用这个 :

$("li:contains('no')").css('background-color', 'green');
于 2013-01-07T14:21:14.573 回答
0
var mar = $(".married").filter( function( index, element ) { 
  return $( element ).text().match( /no/g );
}).css( 'background-color', 'green' );
于 2013-01-07T14:19:34.837 回答