如何根据列值对一个表运行一些jQuery来更改填充?
我有下面的代码,我需要这样做,所以填表在我的表的第二列取决于第一列中的数字。如何根据列值对一个表运行一些jQuery来更改填充?
<tr>
<td id="refKey_1" style="text-align:center;" class=" sorting_1">1.0.0</td>
<td id="Title_1">
<input type="text" value="x" size="100" name="item.Title" id="item_Title_1">
</td>
</tr>
<tr>
<td id="refKey_2" style="text-align:center;" class=" sorting_1">1.2.0</td>
<td id="Title_2">
<input type="text" value="xx" size="100" name="item.Title" id="item_Title_2">
</td>
</tr>
<tr>
<td id="refKey_3" style="text-align:center;" class=" sorting_1">1.3.4</td>
<td id="Title_3">
<input type="text" value="xxx" size="100" name="item.Title" id="item_Title_3">
</td>
</tr>
我需要的是将第二列具有如果第一列ID在0.0,0.0或非零结束0,10px的或根据20像素的左填充。
有没有办法可以用jQuery做到这一点?
我假设你的意思是单元格的文本,对吗?只是一些正则表达式匹配来做到这一点。
$('tr').each(function() {
var tds = $(this).find('td'),
text = tds.filter('[id^="refKey_"]').text(),
tdToPad = tds.filter('[id^="Title_"]'),
pad;
if (/0\.0$/.test(text))
pad=0;
else if (/\.0$/.test(text))
pad=10;
else
pad=20;
tdToPad.css('paddingLeft', pad);
});
编辑:你也可以使用一个公共类,而不是这些ID选择,这将是一个更标准的做法。另外,您可以将表格ID添加到第一个选择器:$('#tableID tr')
以防您的页面中有多个表格。
$('#tableThatICareAbout').find('tr > td').eq(1)
.css('padding-left',
$('#tableThatICareAbout').find('tr > td').eq(0)[0].id.split('_')[1]
);
我希望这个工作,但它是解决这一问题的任何核心的问题是一个可怕的,可怕的方式。
你介意让代码缩进一点吗?这似乎不适用于我。 [小提琴](http://jsfiddle.net/ult_combo/cynSk/3/) – 2012-07-08 03:54:40
该代码只会更新第一行。你可以使用[':nth-child' selector](http://api.jquery.com/nth-child-selector/)'做类似的事情,但是你需要使用'.css()'的回调语法。 。 – nnnnnn 2012-07-08 03:56:07
tsk tsk,使用'.each'。 '=]' – 2012-07-08 03:56:27
您不必使用“每个”。 JQ处理选区中的多个元素,直到你想为每个元素做独特的事情。 – 2012-07-08 03:48:10
@ErikReppen我正在用函数回调处理每个'tr'。根据现场演示,这是一个完美的工作解决方案,现在如果您有更好的解决方案,我正在倾听。 – 2012-07-08 03:49:47
这看起来非常好。有没有一种方法可以使它工作,以便它在td上使用和refKey_XX的ID键入,然后使用Title_XXX的ID填充td,这非常感谢 – Alan2 2012-07-08 03:57:35