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>

Jqueryを使用して、にliを含む要素のみが緑色の背景を取得するようにしたいと思います。nodiv.married

このコードが機能しない理由がわかりません。意図した結果を得るにはどうすればよいですか?

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 に答える