如何确定调用jQuery函数的行

时间:2013-12-29 18:51:10

标签: jquery html

我想从某一行的<td>'s收集所有数据。我对jQuery知之甚少,所以我尝试从更一般的事情到我真正需要的事情。

现在我有这个简单的Example来说明我的意思。我根据数据库中的数据动态创建一个表,这样一行可以包含1到多个<td>..</td>,并且在每个<td>中我有一个<input../>控件保存一些值。最终目标是能够让用户编辑给定的行,然后更新(从所有输入中收集值并将它们发送到服务器)编辑的数据。

正如您在我的JsFiddle示例中所看到的,我想出了如何使用$('td').each(function()收集所有数据,但当然这不是我想要的。我只想要调用getData()函数的数据。这导致了我无法解决的第一个问题(至少以正确的方式解决)。

我所知道的是,如果没有别的,我可以为每个<tr>提供一些独特的id,以便我可以使用jQuery轻松选择它。但是,由于我在同一行的<td>内的锚点上调用click事件的函数,我很确定应该有一种方法来确定行而不给它唯一的id并传递它作为getData()函数的参数,但我找不到办法。那么是否真的可以在不使用特殊标识符的情况下确定行,如果是这样,您可以帮助我使用jQuery函数的代码来选择调用getData()函数的行吗? / p>

2 个答案:

答案 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遍历函数。

http://jsfiddle.net/GzWuP/3/

答案 1 :(得分:1)

您可以使用.parent()来获取父级。你必须使用它两次才能到达tr。 将您的onclick更改为:

`onclick="getData(this)"

` 和你的getData:

function getData(elem) {
 alert( $(elem).parent().parent().find('input').val() );
};

你可以在这里看到结果: http://jsfiddle.net/GzWuP/5/