0

次のようなテーブルがあります。

<table id="table-name">
    <tr><td id="td-name">something</td></tr>
    <tr><td id="td-name">something</td></tr>
    <tr><td id="td-name">something</td></tr>
    <tr><td id="td-name">something</td></tr>
</table>

そして、次のようにjQueryを使用して「何か」の値を変更しようとしています:

$("#table-name #td-name").each(function () {
    $.ajax({
    type: "POST",
    url: "file.asp",
    data: $(this).html()        
    }).done(function r(returnOfASP) {
        $(this).html(returnOfASP);
    });         
});

「file.asp」でデータベースクエリを実行します。「something」はデータベース クエリのパラメータです。<td>「file.asp」はクエリを正しく返しますが、値 (html)を変更できません。Ajax$(this)の "done" は間違っていると思いますが、どうすればよいかわかりません。

4

3 に答える 3

1

あなたの td は一意の ID を必要とするか、クラスと呼ぶ必要があります。

それらをループしたい場合は、td クラスを指定します

<table id="table-name">
    <tr><td class="tdName">something</td></tr>
    <tr><td class="tdName">something</td></tr>
    <tr><td class="tdName">something</td></tr>
    <tr><td class="tdName">something</td></tr>
</table>

Javascript テスト

$("#table-name .tdName").each(function () {
    // do code in here

    // test output in firebug with
    console.log($(this));
});
于 2013-01-30T17:29:49.080 に答える
1

jQuery コードを次のように変更します。

$("#table-name td").each(function () {
    var self = this;
    $.ajax({
        type: "POST",
        url: "file.asp",
        data: $(this).html()        
    }).done(function r(returnOfASP) {
    $(self).html(returnOfASP);
    });         
});

セレクターを台無しにする可能性のあるページに複数の ID を持つことはできません。さらにフィルタリングする場合は、代わりにクラスを使用できます。また、変数に保存thisすると、その問題が解決される場合があります。

});あなたはまた、後にそこにあるはずのない余分なものを持っていました$(this).html()

うまくいけば、それは役に立ちます。

于 2013-01-30T17:26:17.333 に答える
1

jQuery $.proxy()を使用して、別のコンテキストで実行を委任します。あなたの場合、それは親です。

$("#table-name #td-name").each(function () {
    $.ajax({
        type: "POST",
        url: "file.asp",
        data: $(this).html()        
    }).done($.proxy(function(response) { $(this).html(returnOfASP); }, this));
});
于 2013-01-30T17:28:22.480 に答える