jquery最接近tr并找到一个元素

时间:2011-04-27 19:32:52

标签: jquery

我有以下代码

<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。但第二个元素工作正常。可能是什么原因?

4 个答案:

答案 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这样的服务器语言很重要。

你触发这个的输入标签没有类文本值,所以也许这就是问题所在。