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とです。彼らには他の兄弟がいません。だから、これはあなたの論理に何か問題があります。何から選択しようとしていますか?#place#addr#place

また、おそらく複数回コピーされるテンプレートを使用しているように見えるため、同じで複数の要素を使用することになりますid。代わりにクラスを使用してください。

最後に、別のヒントとして、同じオブジェクトを再作成するのではなく、jQueryオブジェクトをキャッシュします。

編集:あなたの更新に基づいて、あなたの問題はあなたのボタンnbrが兄弟ではなくいとこであるということ#addrです#place。あなたがする必要があるnbrのは、その親に移動しtd、次にそこからその兄弟tdに、そしてその子に移動することです。

何かのようなもの:

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

またはより完全な(代わりにを置き換えた後idclass

$('.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 に答える