0

单击时我有一个按钮运行一个函数,我希望之前 TD 中的值从 no 更改为 yes。

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

这是一种可行的方法。但是对于这些事情,你需要小心改变你的 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 回答
1

这里的关键是保留对外部this(单击的按钮)的引用。一旦进入成功回调,上下文就丢失了,因为它是 nan 异步操作。

不过,我们可以使用立即执行的函数来捕获外部this,并将其作为参数引用传递。

    success: (function(button) { return function (id) {
        $(button).closest('td').prev('td').text('yes');
    }; })(this)
于 2012-07-27T13:36:45.223 回答
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");
}

=============================================== OLD:简单的方法是给你的是/否 TD 一个类说 yn

所以你的 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(..) 的 context 属性来保存对您要修改的先前 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 回答