jQuery - 选择当前表行值

时间:2013-06-26 09:28:22

标签: javascript jquery web

当有人点击我表格中的“下载”按钮时,我想将该特定行的日期值传递给一个函数。目前我只能传递第一个表格行的日期值。

这是我正在使用的选择器:

$(this).parent().find('#period-start');

总是会返回:

[<td id=​"period-start">​5/1/2013​</td>]

我尝试了父,子,查找和最近选择器的组合,但是无法偶然发现正确的选择器从当前行中获取日期值。感谢。

表格

<table id="tblStatements" class="table">
            <thead>
                <tr>
                    <th>Period Starting</th>
                    <th>Period Ending</th>
                    <th>Download</th>
                </tr>
            </thead>
            <tbody>

<tr>
  <td id='period-start'>5/1/2013</td>
  <td id='period-end'>5/31/2013</td>
  <td><button type='submit'>Download</button></td>
</tr>

<tr>
  <td id='period-start'>4/1/2013</td>
  <td id='period-end'>4/30/2013</td>
  <td><button type='submit'>Download</button></td>
</tr>

<tr>
  <td id='period-start'>3/1/2013</td>
  <td id='period-end'>3/31/2013</td>
  <td><button type='submit'>Download</button></td>
</tr>

</tbody>
</table>

5 个答案:

答案 0 :(得分:7)

ID 在HTML中始终应为唯一。所以,你可以试试这个,没有使用ID:

// Get the first td
var periodStart = $(this).closest('tr').children('td:eq(0)').text();  

// Get the second td
var periodEnd = $(this).closest('tr').children('td:eq(1)').text();  

FIDDLE DEMO

答案 1 :(得分:1)

使用此 - 不要使用重复的ID,而是使用类

$(this).closest('tr').find('#period-start');

或 -

$(this).closest('td').siblings('#period-start');

答案 2 :(得分:1)

试试这个

 $(this).parent().siblings('#period-start');

确保您的所有ID都是唯一的..您的HTML无效....将其更改为类并尝试此

  $(this).parent().siblings('.period-start');

答案 3 :(得分:1)

你不应该使用多个具有相同id使用类insidead的元素。

<tr>
  <td class='period-start'>5/1/2013</td>
  <td class='period-end'>5/31/2013</td>
  <td><button type='submit'>Download</button></td>
</tr>

<tr>
  <td class='period-start'>4/1/2013</td>
  <td class='period-end'>4/30/2013</td>
  <td><button type='submit'>Download</button></td>
</tr>

<tr>
  <td class='period-start'>3/1/2013</td>
  <td class='period-end'>3/31/2013</td>
  <td><button type='submit'>Download</button></td>
</tr>

并使用此代码选择适当的元素

$(this).parents('tr').find('.period-start');

答案 4 :(得分:0)

试试这个

$.trim($(this).closest('tr').find('[id="period-start"]').html());//this gives start date