如何根据列值对一个表运行一些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); 
}); 

Fiddle

编辑:你也可以使用一个公共类,而不是这些ID选择,这将是一个更标准的做法。另外,您可以将表格ID添加到第一个选择器:$('#tableID tr')以防您的页面中有多个表格。

+0

您不必使用“每个”。 JQ处理选区中的多个元素,直到你想为每个元素做独特的事情。 – 2012-07-08 03:48:10

+0

@ErikReppen我正在用函数回调处理每个'tr'。根据现场演​​示,这是一个完美的工作解决方案,现在如果您有更好的解决方案,我正在倾听。 – 2012-07-08 03:49:47

+0

这看起来非常好。有没有一种方法可以使它工作,以便它在td上使用和refKey_XX的ID键入,然后使用Title_XXX的ID填充td,这非常感谢 – Alan2 2012-07-08 03:57:35

$('#tableThatICareAbout').find('tr > td').eq(1) 
.css('padding-left', 

$('#tableThatICareAbout').find('tr > td').eq(0)[0].id.split('_')[1] 

); 

我希望这个工作,但它是解决这一问题的任何核心的问题是一个可怕的,可怕的方式。

+0

你介意让代码缩进一点吗?这似乎不适用于我。 [小提琴](http://jsfiddle.net/ult_combo/cynSk/3/) – 2012-07-08 03:54:40

+0

该代码只会更新第一行。你可以使用[':nth-​​child' selector](http://api.jquery.com/nth-child-selector/)'做类似的事情,但是你需要使用'.css()'的回调语法。 。 – nnnnnn 2012-07-08 03:56:07

+0

tsk tsk,使用'.each'。 '=]' – 2012-07-08 03:56:27