2017-11-14 16 views
0
<table id='xhtmlgrid'> 
<tbody> 
<tr class='bgwhite'> 
<td> 
<table> 
<tbody> 
<tr> 
<td> 
<span> 
<img src="./secured_off1.png"> 
</span> 
</td> 
<td> 
<span> 
<img src="./secured_off2.png"> 
</span> 
</td> 
<td> 
<span> 
<img src="./secured_off3.png" title="Locked"> 
</span> 
</td> 
<td> 
<span> 
<img src="./secured_off4.png"> 
</span> 
</td> 
</tr> 
</tbody> 
</table> 
</td> 
</tr> 
</tbody> 
</table> 

enter image description here私はこのようなコードを持っている画像のタイトル

に基づいてTRテーブルに別のクラスを適用し、画像のタイトルに基づいて、私はそのTRで複数のイメージを持って、私はにbgwhiteからTRクラスを変更したいですbggreen、どうすればいいですか?

これまでのところ、私はあなたのコードはほとんど正しいHTML

+0

ところで、あなたのソースはXHTMLではなくHTMLです。 –

答えて

0
$("#xhtml_grid table > tbody > tr").each(function() { 
     var hdnLock = $(this).find('td:eq(2)').find('img').attr('title'); 
     if (hdnLock == 'Locked') { 
      $(this).parents('tr').css('background-Color', '#ddff99'); 
     } 
    }); 

ご支援とご提案をしてくれてありがとうみんな、私はここで私は私のために働いた私のコードを掲示しています、私の問題のための方法を見つけました。

1

の画像を追加している参照用画像のタイトル

$("#xhtml_grid table > tbody > tr").each(function() { 
     var hdnLock = $(this).find('td:eq(2)').find('img').attr('title'); 
     if (hdnLock == 'Locked') { 
     } 

    }); 

を見つけるために、このコードを使用しています。最初のセレクタでテーブルIDを変更する必要がありました。そしてtd:eq(2)を削除しました。それは正しくありませんでした。行に1つのイメージしかないと仮定して、イメージを直接選択することができます。

$("#xhtmlgrid tbody > tr").each(function() { 
 
    var hdnLock = $(this).find('img').attr('title'); 
 
    if (hdnLock == 'Locked') { 
 
    $(this).addClass('bggreen').removeClass('bgwhite'); 
 
    } 
 
});
.bgwhite { 
 
    background: red; 
 
} 
 

 
.bggreen { 
 
    background: green; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table id='xhtmlgrid'> 
 
    <tbody> 
 
    <tr class='bgwhite'> 
 
    <td> 
 
    <table> 
 
     <tbody> 
 
     <tr> 
 
      <td> 
 
      <img src="./secured_off.png" title="Locked"> 
 
      </td> 
 
     </tr> 
 
     </tbody> 
 
    </table> 
 
    </td> 
 
    </tr> 
 
    </tbody> 
 
</table>

+0

私は最も近いtrにCSSクラスを適用しようとしていません、私は上記のtrに適用しようとしています –

+0

私のコードは、最も近いtrには適用されません、クラス 'bgwhite'でtrに適用されます。 *編集*申し訳ありませんが、私の悪い。私は正しいように自分のコードを更新しました。唯一の変更は、最初のセレクタが '#xhtmlgrid> table> tbody> tr'であり、現在は:#xhtmlgrid> tbody> tr'です。このようにして、メインテーブルの行だけをループします。 – amcdrmtt

1

代わりの各々trを横断、パフォーマンスを改善し、不要なトラバースを低減するであろうと、各imgを通してトラバース。以下は、更新されたコードです:

$("#xhtmlgrid table > tbody > tr > td > img").each(function() { 
 
    if ($(this).attr('title') == 'Locked') { 
 
    $(this).closest('tr').addClass('bggreen').removeClass('bgwhite'); 
 
    } 
 
});
.bgwhite { 
 
    background: red; 
 
} 
 

 
.bggreen { 
 
    background: green; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table id='xhtmlgrid'> 
 
    <tbody> 
 
    <tr class='bgwhite'> 
 
     <td> 
 
     <table> 
 
      <tbody> 
 
      <tr> 
 
       <td> 
 
       <img src="./secured_off.png" title="Locked"> 
 
       </td> 
 
      </tr> 
 
      <tr> 
 
       <td> 
 
       <img src="./secured_off.png" title="unlocked"> 
 
       </td> 
 
      </tr> 
 
      </tbody> 
 
     </table> 
 
     </td> 
 
    </tr> 
 
    </tbody> 
 
</table>

+0

私は最も近いtrにCSSクラスを適用しようとしていません、私は上記のtrに適用しようとしています –

+0

Closestは上記のtrにのみ適用されます。それが最も近い作品です。 –

+0

私はそのTDに複数の画像を持っているので、td:eq(2)を使ってtitle = 'Locked'という画像を探すのです –

1

あなただけあなたが何をする必要があるかclass="bgwhite"から始めたものTRSを、変更したい場合は、明示的にそれらの上にトラバースでは、その後、それぞれの場合にチェック内部にtitle="Locked"の少なくとも1つのimgがあります。

var whiteTrs = document.querySelectorAll('#xhtmlgrid tr.bgwhite'); 
 
whiteTrs.forEach(function(tr) { 
 
    if (tr.querySelector('img[title="Locked"]')!=null) 
 
    tr.className = 'bggreen'; 
 
});
.bgwhite {background:white} 
 
.bggreen {background:green}
<table id='xhtmlgrid'> 
 
<tbody> 
 
<tr class='bgwhite'> 
 
<td> 
 
<table> 
 
<tbody> 
 
<tr> 
 
<td> 
 
<span> 
 
<img src="./secured_off1.png"> 
 
</span> 
 
</td> 
 
<td> 
 
<span> 
 
<img src="./secured_off2.png"> 
 
</span> 
 
</td> 
 
<td> 
 
<span> 
 
<img src="./secured_off3.png" title="Locked"> 
 
</span> 
 
</td> 
 
<td> 
 
<span> 
 
<img src="./secured_off4.png"> 
 
</span> 
 
</td> 
 
</tr> 
 
</tbody> 
 
</table> 
 
</td> 
 
</tr> 
 
</tbody> 
 
</table>

関連する問題