我有以下代码
<form name="frm1">
<table id="mytable" border="1" cellspacing="2" cellpadding="2">
<tr>
<td>
column1
</td>
<td>
column2
</td>
<td>
column3
</td>
</tr>
<tr>
<td>
ABC
</td>
<td>
<select name="mydd" class="mydd">
<option value="ABC">ABC</option>
<option value="DECF">DECF</option>
<option value="GHHHH">GHHHH</option>
</select>
</td>
<td>
<input type="text" name="textvalue" id="textvalue" value="kljaslkjd">
</td>
</tr>
<tr>
<td>
ABC
</td>
<td>
<select name="mydd" class="mydd">
<option value="222">222</option>
<option value="333">333</option>
<option value="444">444</option>
</select>
</td>
<td>
<input type="text" class="textvalue" name="textvalue" id="textvalue" value="kljaslkjd">
</td>
</tr>
</table>
</form>
jquery代码如下:
$(document).ready(function(){
$(".mydd").change(function(){
var value= $(this).closest("tr").find(".textvalue").attr("name");
alert('value:' + value);
});
});
我想要做的是,当我更改下拉选项时,我得到最接近的tr,然后找到输入元素。第一个元素总是返回undefined。但第二个元素工作正常。可能是什么原因?
答案 0 :(得分:3)
第一个<input>
缺少textvalue
类。变化
<input type="text" name="textvalue" id="textvalue" value="kljaslkjd">
到
<input type="text" class="textvalue" name="textvalue" id="textvalue" value="kljaslkjd">
标记还包含多个具有重复ID的元素,这是无效的HTML。因此,请将第一个id="textvalue"
更改为id="textvalue1"
,将第二个更改为id="textvalue2"
。
答案 1 :(得分:1)
重复的ID - 他们每次都会得到你。这可能是这里的问题。其次,第一个没有合适的班级 - 或者一个班级。
答案 2 :(得分:0)
第一行中的<input>
没有class="..."
因此,.textvalue
找不到它。
答案 3 :(得分:0)
我建议你总是为你的html标签(name,id)使用这两个选项,因为你可以有两个同名的元素,根本没有问题,但它必须是唯一的id和id这对于javascript来说非常重要,而且这个名称对于像PHP这样的服务器语言很重要。
你触发这个的输入标签没有类文本值,所以也许这就是问题所在。