Jquery child> Parent> child>子选择器

时间:2014-07-19 12:47:37

标签: javascript jquery html css

我需要以下代码的帮助:

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] ,我都会得到输入[name = data] 的前一个值+当前值的输入[名=数据]

而且,我不知道为什么。帮助将受到高度赞赏。

4 个答案:

答案 0 :(得分:2)

使用jquery非常简单

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

答案 1 :(得分:2)

您的第三个版本已经有效。

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

您的第二种方法不正确,因为children是一种功能。

你的第一和第四种方法(除非我是盲人)是一样的。但是,因为:eq()是零索引的;您选择的<td>实际上是位置1,而不是2。您可以看到此工作here

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

您可能还想了解next(),这可能会让您更容易。

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

请参阅next()this fiddle

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

 $(this).next().find('input[name=data]').val()