我需要以下代码的帮助:
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] 的前一个值+当前值的输入[名=数据]
而且,我不知道为什么。帮助将受到高度赞赏。
答案 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()