如何使用jQuery引用特定的td(s)从html表中获取它们的值?

时间:2012-05-30 16:14:11

标签: jquery struts2

我正在使用jQuery 1.6.4,我有一个从html表中得到的值数组。我想要做的是当用户点击该行时从特定td获取值。我使用此代码从特定行获取所有td值:

jsp代码:

<tr>
<s:iterator value="model.NameList">
<tr>
   <td align=center><s:property value="message.substring(0,125)"/></td>
   <td align=center><s:property value="timestamp"/></td>
   <td align=center><s:property value="retryCount"/></td>
   <td align=center><s:property value="specialId"/></td>
...
   </tr>
  </s:iterator> ...

specialId是我需要从点击事件中的每个选定行获取的td单元格值。

//点击遗漏的事件代码。

var arr = [];
arr = $(this).find('td').map(function(){     
return this.innerHTML;   
}).get();  

然后我需要使用if块检查特定的单元格值,因为我循环遍历该行中的单元格。我在下面的代码中对其进行了硬编码以获取值,但我需要动态地执行此操作。

$.each(arr, function(i, l){ 
    if(i == 6) { ...

所以我为td单元创建了一个id来获取该值,但是我需要从多行获取这个特定的单元格值,因此id本身不会起作用。我需要处理从行中获取值,然后如果用户选择多行并将该值发送到Struts2隐藏文本框,则从多行获取它。我只是使用一个文本框开始,并且工作正常。

$('#textboxId').val(l); //Set the value to the id of a hidden textbox.

我是以错误的方式来做这件事的吗?由于我每行只需要一个值,我认为有更好的方法来编码,但我还需要允许td的n(值)。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

您可以使用jquery parent()方法根据用户的点击查找父TD。

<强> Here's a working demo

以下是我正在使用的示例HTML:

<table>
    <tr>
        <td><span>Foo</span></td>
    </tr>
    <tr>
        <td><span>Bar</span></td>
    </tr>
</table>​

这是Jquery代码,使用1.6.4。

$(document).ready(function(){
    $('span').bind('click',function(){
        var newVal = '<b>You clicked</b>';
        $(this).parent('td').html(newVal);
    });
});​

你在问题​​中提出的问题并不完全清楚,所以我错了。如果是这样,请为我们创建一个jsfiddle,以便更好地了解您的问题。

修改

在对您的问题进行编辑之后,这就是您要寻找的内容:

示例HTML

<table>
    <tr>
        <td>Property</td>
        <td>Timestamp</td>
        <td>RetryCount</td>
        <td>SpecialID</td>
    </tr>    
</table>​

<强> Jquery的

$(document).ready(function(){
    $('tr').bind('click',function(){
       alert($(this).children('td').last().text());
    });
});​

<强> Live Demo

<强>解释

首先将点击处理程序附加到tr,以便用户可以点击该行的任意位置。点击处理程序会查找所点击的td(即子项)中的所有tr个元素。在它找到的所有孩子中,你告诉它警告最后一个孩子的文本(这是.last()方法的作用)。

答案 1 :(得分:1)

点击行后,您可以使用以下内容获取值:

jQuery('table tr').click(function(){
   jQuery('#hiddenInputText').val('jQuery(this).find('#thisone').text()'); 
   //thisone is the id of the id whose value should be fetched
});​

说你的文字区是否像

<s:inputText id="hiddenInputText" />

JS Fiddle