选择HTML的兄弟值

时间:2013-02-07 17:47:30

标签: jquery html listview siblings

麻烦地用jQuery选择我的ListView的兄弟值。这是我正在尝试的jQuery语法,但是当我在firebug中调试到控制台时,它表示一切都未定义但是当我查看html时我可以看到它们中的值,所以我知道它们只是不选择它们。它是在Update按钮的click事件上调用的,我需要抓住listview中不同行的兄弟姐妹,为我正在更新的行。

        $('.nbr')
.click(function){
            var newaddr = $(this).siblings('#addr').val();
            var originaladdr = $(this).siblings('#addr').attr('data-Value');
            var newplace = $(this).siblings('#place').val();
            var originalplace = $(this).siblings('#place').attr('data-Value');

的ListView:

    <asp:ListView runat="server" id="ListView1" >
        <LayoutTemplate>
            <table id="tablesorter" style="border:solid 1px black;width:55%;">
                <thead>
                    <tr>
                        <th>
                            <a href="#">Addr</a>
                        </th>
                        <th>
                            <a href="#">Place</a>
                        </th>
                    </tr>
                </thead>
                <tbody>
                    <tr id="itemPlaceholder" runat="server" />
                </tbody>
                <tfoot>
                </tfoot>
            </table>
        </LayoutTemplate>
        <ItemTemplate>
            <tr>
                <td>
                   <input maxlength="3" size="4" type="text" id="addr" data-Value="" value="<%# Eval("addr")%>" />  
                   <input maxlength="4" size="4" type="text" id="place"  data-Value="" value="<%# Eval("place")%>" />  
                </td>
                <td>
                   <input type="button" class="nbr" id="btn_update" value="Update" />                     
                </td>
            </tr>
        </ItemTemplate>
    </asp:ListView>

1 个答案:

答案 0 :(得分:0)

#addr#place的兄弟姐妹唯一的事情是#addr#place。他们没有其他兄弟姐妹。所以你的逻辑错了。你想从中选择什么?

此外,由于您似乎正在使用可能会多次复制的模板,因此您将拥有多个具有相同id的元素。改为使用类。

最后,另一个提示是,缓存你的jQuery对象,而不是重新创建相同的对象。

修改:根据您的更新,您的问题是您的按钮nbr是堂兄,而不是#addr#place的兄弟。你需要做的是从nbr导航到它的父td,然后从那里导航到它的兄弟td然后再转到它的孩子。

类似的东西:

$(this).parent().prev().children("#addr");

或更完整(在用[{1}}代替id之后):

class

Here's a fiddle to demonstrate