我正在使用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(值)。
我该怎么做?
答案 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" />