Jquery - 用ajax设置单选按钮

时间:2017-03-01 02:29:31

标签: jquery ajax

我在小部件区域有一个“重新加载”按钮的页面。小部件包含textareas和单选按钮。当我点击重新加载按钮时,我正在尝试设置textarea的文本并选择单选按钮。

我当前的代码正在首次点击重新加载按钮。 textarea和单选按钮使用测试值正确设置。

然后我输入textarea并更改它的文本,然后选择一个不同的单选按钮值。当我单击重新加载按钮时,textarea和单选按钮应该重新加载它们的测试值。

但是,只重新加载textarea的值。单选按钮的选择不会返回到测试选择。为什么这只在我第一次点击重新加载按钮时才有效?

这是我的代码:

$('.refreshTextandRadio').click(function () {
    var itemName_Text = $(this).attr('reloadName_Text');
    var itemName_Radio = $(this).attr('reloadName_Radio');
    var evalID = $(this).attr('evalID');
    $.ajax({
        type: "POST",
        url: "JDFormAJAX_Reload.asp",
        data: 'itemName_Text=' + itemName_Text + '&evalID=' + evalID,
        success: function (msg) {
            $("textarea#" + itemName_Text).val(msg);
        }
    })

    $.ajax({
        type: "POST",
        url: "JDFormAJAX_Reload.asp",
        data: 'itemName_Radio=' + itemName_Radio + '&evalID=' + evalID,
        success: function (msg) {
            $('input[name="' + itemName_Radio + '"][value="' + msg + '"]').attr('checked', true);
        }
    })

});

ajaxURL页面只返回测试值,并不足以包含在此处。有没有人知道为什么这个代码在第一次点击时设置了两个值,但只恢复textarea而不是后续点击的radiobutton?

1 个答案:

答案 0 :(得分:1)

对于动态生成的内容,您应该将事件处理程序附加到未使用Ajax 生成(重新)生成的html元素,而不是Ajax重新生成的元素(在您的case,你的按钮有.refreshTextandRadio类。

因此,您应该将click事件附加到不受Ajax影响的下一个更高(父)元素。仅举例说明,我将使用document,它肯定高于您的任何按钮,并在那里附加您的点击处理程序。

所以你的原始代码:

$('.refreshTextandRadio').click(function () {
   //your actions
});

可以重写为:

$(document).on('click','.refreshTextandRadio',function(){
  //your actions
});

当然,您需要使用较低的父元素(不受Ajax影响,如上所述),以提高代码效率。

希望这有帮助!