根据图像标题应用不同的 class 到 table tr
Apply different class to table tr based on image title
<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>
我有这样的代码,基于图像标题,我在那个 tr 中有多个图像,我想将 tr class 从 bgwhite 更改为 bggreen,我该怎么做,感谢任何帮助。
到目前为止,我正在使用此代码查找图片标题
$("#xhtml_grid table > tbody > tr").each(function () {
var hdnLock = $(this).find('td:eq(2)').find('img').attr('title');
if (hdnLock == 'Locked') {
}
});
为了参考,我添加了 html
的图像
您的代码大部分是正确的。我不得不在第一个 selector 中更改 table id。我删除了 td:eq(2)
。这是不正确的。您可以直接 select 图片,而不是假设该行中只有一张图片。
$("#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>
与其遍历每个 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>
如果您只想更改以 class="bgwhite"
开头的那些 trs,您需要做的是显式遍历这些,然后检查每个是否至少有一个 img 以 title="Locked"
里面。
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>
$("#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');
}
});
感谢大家的支持和建议,我找到了解决问题的方法,在这里我发布了对我有用的代码。
<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>
我有这样的代码,基于图像标题,我在那个 tr 中有多个图像,我想将 tr class 从 bgwhite 更改为 bggreen,我该怎么做,感谢任何帮助。
到目前为止,我正在使用此代码查找图片标题
$("#xhtml_grid table > tbody > tr").each(function () {
var hdnLock = $(this).find('td:eq(2)').find('img').attr('title');
if (hdnLock == 'Locked') {
}
});
为了参考,我添加了 html
的图像您的代码大部分是正确的。我不得不在第一个 selector 中更改 table id。我删除了 td:eq(2)
。这是不正确的。您可以直接 select 图片,而不是假设该行中只有一张图片。
$("#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>
与其遍历每个 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>
如果您只想更改以 class="bgwhite"
开头的那些 trs,您需要做的是显式遍历这些,然后检查每个是否至少有一个 img 以 title="Locked"
里面。
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>
$("#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');
}
});
感谢大家的支持和建议,我找到了解决问题的方法,在这里我发布了对我有用的代码。