我想从某一行的<td>'s
收集所有数据。我对jQuery
知之甚少,所以我尝试从更一般的事情到我真正需要的事情。
现在我有这个简单的Example来说明我的意思。我根据数据库中的数据动态创建一个表,这样一行可以包含1到多个<td>..</td>
,并且在每个<td>
中我有一个<input../>
控件保存一些值。最终目标是能够让用户编辑给定的行,然后更新(从所有输入中收集值并将它们发送到服务器)编辑的数据。
正如您在我的JsFiddle
示例中所看到的,我想出了如何使用$('td').each(function()
收集所有数据,但当然这不是我想要的。我只想要调用getData()
函数的数据。这导致了我无法解决的第一个问题(至少以正确的方式解决)。
我所知道的是,如果没有别的,我可以为每个<tr>
提供一些独特的id
,以便我可以使用jQuery
轻松选择它。但是,由于我在同一行的<td>
内的锚点上调用click事件的函数,我很确定应该有一种方法来确定行而不给它唯一的id
并传递它作为getData()
函数的参数,但我找不到办法。那么是否真的可以在不使用特殊标识符的情况下确定行,如果是这样,您可以帮助我使用jQuery
函数的代码来选择调用getData()
函数的行吗? / p>
答案 0 :(得分:1)
试试这个:
$(function(){
$('a').click(function(e){
e.preventDefault();
//Get tr
var tr = $(this).parent().parent();
//Find input
var input = tr.find('input');
alert(input.val());
});
});
您可以在创建表时为表分配ID或其他内容,以提供遍历提示,这将完全有效。
以上是一个不同的解决方案,每个锚都会获得一个附加到其click
事件的处理程序。我们想要做的是在锚点附近窥探一下,找到感兴趣的input
。
首先,我们找到了我们点击的链接的祖父母,我们知道这将是一个表格行:var tr = $(this).parent().parent();
现在,我们只需要进一步挖掘,使用input
方法找到相关的find()
:
var input = tr.find('input');
只要您的表标记一致,您就可以轻松找到您正在寻找的任何元素,这要归功于jQuery的DOM遍历函数。
答案 1 :(得分:1)
您可以使用.parent()
来获取父级。你必须使用它两次才能到达tr。
将您的onclick更改为:
`onclick="getData(this)"
` 和你的getData:
function getData(elem) {
alert( $(elem).parent().parent().find('input').val() );
};
你可以在这里看到结果: http://jsfiddle.net/GzWuP/5/