0

クリックすると関数が実行されるボタンがあり、前のTDの値を「いいえ」から「はい」に変更したい。

HTML:

<tr class="odd">
  <td class="">13.00</td>
  <td class="">DDR</td>
  <td class="">No</td>
  <td class="">
    <div class="button ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" onclick="javascript:paid(4);return false" href="#" "="" role="button" aria-disabled="false">
       <span class="ui-button-text">Paid</span>
    </div>
  </td>
</tr>

したがって、ユーザーが「有料」をクリックすると、これが呼び出されます。Javascript:

function paid(iD) {       
    $.ajax({
        contentType: "application/json; charset=utf-8",
        type: "POST",
        url: "Paid",
        dataType: "json",
        data: "{ id:" + iD +"}",
        success: function (id) {
            //Here change value of previous TD to yes;

        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {               
        }
    });
};

以前のtdのhtmlにアクセスして、その値を変更する方法はありますか?

Oそしてまたボタンを消しますか?

4

5 に答える 5

1

ここで重要なのは、外側this(クリックされたボタン)への参照を保持することです。成功コールバックに入ると、それはnan非同期操作であるため、コンテキストは失われます。

thisただし、すぐに実行される関数を使用して外部をキャプチャし、引数参照として渡すことができます。

    success: (function(button) { return function (id) {
        $(button).closest('td').prev('td').text('yes');
    }; })(this)
于 2012-07-27T13:36:45.223 に答える
1

これは機能する1つの方法です。しかし、これらの種類のものでは、次の後にhtmlを変更することに注意する必要があります。

$("span.ui-button-text").click(function(){
    var td = $(this).closest("td").prev();
    //do ajax here
});

これにより、正しいtdセルを保存できるようになり、成功コールバック内でそれを参照できます。例えば:

td.html("Yes");
于 2012-07-27T13:37:22.897 に答える
0

回避策

TR要素にIDを追加します

<tr id="tr1" class=".odd">

<div class="button ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" onclick="javascript:paid(4,"tr1");return false" href="#" "="" role="button" aria-disabled="false">

有料機能を次のように変更します

paid(id, rowId);

TDとして

<td class="yn">No</td>

および成功ハンドラー

success: function (id) {
$("#"+rowId+" .yn").html("Yes");
}

==============================================古い:簡単な方法あなたのyes/noTDにクラスsayynを与えることです

TDは次のようになります

<td class="yn">No</td>

成功ハンドラーを次のように実装します

success: function (id) {
$(".odd .yn").html("Yes");
},
于 2012-07-27T13:38:10.047 に答える
0

HTML:

<td class="" id="paid">No</td>

Javascript:

document.getElementById("paid").innerHTML = "Yes";
于 2012-07-27T13:38:11.593 に答える
0

$ .ajax(..)のコンテキストプロパティを使用して、変更する前のTDへの参照を保存することをお勧めします。

例えば:

$.ajax({
        ...
        context: prevTD, // specify the previous TD as context
        ...
        success: function (data) {
            // 'this' refers to the passed in context
            // so you can do 
            this.text('Yes');
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {               
        }
    });

呼び出している場所から前のTDを取得するには、次を使用できます。

yourPaidButton.parents('TD').first().prev()
于 2012-07-27T13:42:35.127 に答える