1

在模态面板中的选择框更改。我正在触发 ajax 请求并加载模式面板数据取决于响应。

我看到最初只有一个请求在第一次尝试时触发。但它会随着选择选项的次数而不断增加。

下面是我的脚本

$(".dds").msDropDown();
$('#dropdown').off('change');
$('#dropdown').on('change', takeAction);

function takeAction(event){
event.preventDefault();
var colour = $('#colors .selected').attr('data-color');
console.log(colour);
new Ajaxinator().jsonPost({
    url :$(event.currentTarget).val(),
    data : {
        name : $(event.currentTarget).attr('title'),
        colour : colour
    },
    success: function (response)
    {   
    $('#dropdown').off('change');

    $('#Data').html(response.Data);
    $('#dropdown').off('change',takeAction);

}
});

};

我认为这是因为每个 ajax 请求都会为 #dropdown 创建新绑定,并且 onchange 函数会多次调用。谁能帮我吗。

4

2 回答 2

0

你能试试这个吗?

var oAJAXRequest = false; //GLOBAL VARIABLE

$("#dropdown").unbind('change');
$("#dropdown").bind('change', takeAction);


function takeAction(){

    if(oAJAXRequest != false){
      return;
    }

    event.preventDefault();
    var colour = $('#colors .selected').attr('data-color');
    oAJAXRequest = $.ajax({
        type: 'POST',
        url: $(event.currentTarget).val(),
        data : {
          name : $(event.currentTarget).attr('title'),
          colour : colour
        },
        success: function(data) {
            $('#Data').html(response.Data);
            oAJAXRequest = false;
        },
        error: function(jqXHR, sMessage, oException) {
            oAJAXRequest = false;
        }
    });
}
于 2013-10-15T05:53:21.267 回答
0

我用了

$('#dropdown').off('change',takeAction);

为我工作。

于 2013-10-15T16:45:53.740 回答