Jquery child>Parent>child>子选择器

Jquery child>Parent>child>child selector

本文关键字:child 选择器 Parent Jquery      更新时间:2023-09-26

我需要帮助我的以下代码:

Html:

<table>
 <tr class="oc">
   <td class="process">process</td>
   <td><input name="data" /></td>
 </tr>
 <tr class="oc">
   <td class="process">process</td>
   <td><input name="data" /></td>
 </tr>
</table>

点击td[class=process],我需要输入[name=data] 的值。我尝试了几种方法,但都失败了。尝试包括以下内容:

Jquery内部:

var v = $(this).parent().children(":eq(2)").children().val()*1;
var v = $(this).parent().children.children("input[name=data]").val()*1;
var v = $(this).parent().find("input[name=data]").val()*1;
var v = $(this).parent().children(":eq(2)").children().val()*1;

发生的事情是,每次我点击td[class=process],我得到input[name=data]的前一个值+ input[name=data]

的当前值

我也不知道为什么。

您的第三个变体已经可以工作了。

var v = $(this).parent().find("input[name=data]").val()*1;

你的第二种方法是不正确的,因为children是一个函数。

你的第一和第四进近(除非我瞎了)是一样的。然而,由于:eq()是零索引的;你选择的<td>实际上是位置1,而不是2。你可以看到它在这里工作。

var v = $(this).parent().children(":eq(1)").children().val()*1;

您可能也喜欢听到next(),这可能会使这更容易一些。

var v = $(this).next().children().val() * 1;

参见next()和this fiddle

使用jquery非常简单

$('.process').click(function(e)
{
    var myData = $(this).next().children().val();
});

您可以使用next()来定位下一列,然后使用find()或children()来访问其中的输入。

$("td.process").click(function(){
  var v = $(this).next("td").find("input[name='data']").val();
})
 $(this).next().find('input[name=data]').val()