我必须根据一些业务逻辑更改表格行颜色。我的访问权限有限。我有决定 TD 内容的 PHP 代码...从那个 TD 我必须更改当前的 TR 背景颜色。
jQuery 可以提供帮助,因为它有很多遍历器和访问器。
我正在写的代码是
<script type="text/javascript">$(this).closest("td").css("border", "1px solid red");</script>
但无法访问当前的 TD 或 TR
我必须根据一些业务逻辑更改表格行颜色。我的访问权限有限。我有决定 TD 内容的 PHP 代码...从那个 TD 我必须更改当前的 TR 背景颜色。
jQuery 可以提供帮助,因为它有很多遍历器和访问器。
我正在写的代码是
<script type="text/javascript">$(this).closest("td").css("border", "1px solid red");</script>
但无法访问当前的 TD 或 TR
不要使用this,而是给元素一个 id 并使用 jQuery 获取它。在您的代码中,这没有任何意义。像:
<table><tr><td> <input id="myInput" type="text" /> </td></tr></table>
//If you want to access the td
$('#myInput').closest("td").css("border", "1px solid red");
//If you want to access the tr
$('#myInput').closest("tr").css("background", "red");
在这里你可以使用 parents() 功能。
如果你的元素是 $('#el') 那么下面会给你最近的 td 和 tr
$('#el').parents('td').first();
$('#el').parents('tr').first();
然后您可以应用如下操作
$('#el').parents('td').first().css("border", "1px solid red");
$('#el').parents('tr').first().css("border", "1px solid red");
您需要某种方式来定位 TD 内容或 TD 本身。如果内容是唯一的,您可以搜索关键字或词组。无论哪种方式,您都需要一个选择器 - $(this) 只是在处理程序内一次对 jquery 对象的引用。
编辑
我想了更多,这里有一些你可以尝试的东西。由于您只能访问内容,您可以向其中添加一些内容,例如UPDATED吗?如果是这样,那么您可以添加该关键字,并且使用 jQuery,我们可以添加边框、背景和删除关键字,如下所示:
<table cellpadding="5px" cellspacing="5px" border="1px">
<tr><td>*UPDATED*Apple</td><td>Pie</td></tr>
<tr><td>Orange</td><td>Crush</td></tr>
</table>
-
var $updatedContent = $('td:contains("*UPDATED*")');
$updatedContent.closest('td').css('border', '1px solid red').closest('tr').css('background','green');
$updatedContent.text($updatedContent.text().replace('*UPDATED*', ''));
</p>
假设在最坏的情况下,您有嵌套表并且无法更改当前 TD 属性,则可以通过以下方式在其中打印一个空跨度:
<table>
<tr>
<td>Content 1
<table>
<tr>
<td>Content 2<span data-class="very_important" /></td>
</tr>
</table>
</td>
</tr>
</table>
比像这样向(第一个或最后一个)父 TR 添加类:
$(function() {
$('span[data-class]').each(function(n) {
var highlightClass = $(this).attr('data-class');
$(this).parents('tr:first').addClass( highlightClass );
$(this).remove(); /* Optional */
});
});
现在你的 TR 有了类,你可以按照你喜欢的方式来设计它(和它的孩子)。结果代码:
<table>
<tr>
<td>Content 1
<table>
<tr class="very_important">
<td>Content 2</td>
</tr>
</table>
</td>
</tr>
</table>