0

使用 jQuery 选择我的 ListView 的兄弟值时遇到麻烦。这是我正在尝试的jQuery语法,但是当我在firebug中调试到控制台时,它说一切都是未定义的,但是当我查看html时,我可以看到它们中的值,所以我知道它们只是没有选择它们。它在更新按钮的单击事件上被调用,我需要在我的列表视图中为我正在更新的行获取不同行的兄弟姐妹。

        $('.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');

列表显示:

    <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>
4

1 回答 1

0

#addr唯一与and是兄弟的东西#place#addrand #place。他们没有其他兄弟姐妹。所以你的逻辑有问题。你想从什么中选择?

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

最后,另一个技巧,缓存您的 jQuery 对象,而不是重新创建相同的对象。

编辑:根据您的更新,您的问题是您的按钮nbr是表兄弟而不是#addr和的兄弟#place。你需要做的是从nbr它的 parent导航td,然后从那里导航到它的兄弟姐妹,然后再导航td到它的孩子。

就像是:

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

id或更完整(在替换你之后class):

$('.nbr').click(function){
    var parent = $(this).parent().prev();
    var addrNode = parent.children(".addr").first();
    var placeNode = parent.children(".place").first();

    var newaddr = addrNode.val();
    var originaladdr = addrNode.data('Value');
    var newplace = placeNode.val();
    var originalplace = placeNode.data('Value');
    // whatever you want to do with these values...
}

这是一个要演示的小提琴

于 2013-02-07T17:57:02.007 回答