div刷新后,select不会进行ajax调用

时间:2018-10-10 10:10:01

标签: javascript jquery ajax

我在同一个div中有一些功能。一切都很好,但只有在第一次。之后,没有任何效果。

我有一个带有更改ajax调用的select2:

$('#category').change(function(e){
e.preventDefault();
var s = document.getElementById("category");
var strUser = s.options[s.selectedIndex].value;
var formData = new FormData();
formData.append('caller', 'PrintData');
formData.append('id', strUser);
$.ajax({ url: '../inc/call.php',
    enctype: 'multipart/form-data',
    processData: false,
    contentType: false,
    cache: false,
    data: formData,
    type: 'POST',
    success: function(output) {
        $('#data').html(output);
    }
});
})

select2包含类别,它将列出属于该类别的所有行。到目前为止,一切都很好。

通话后,它将用3个按钮将所有结果作为表格列出。其中之一使用ajax调用删除该字段。 要收听该按钮的单击,我使用以下内容:

$('#reloader').on( "click", "button", function(e) {
e.preventDefault();
let button = $(this); 
let id = button.data("id"); 
let func = button.data("function");
let code = button.data("action");

if(func == "delete"){
    DeleteData(id, code);
}else if(func == "edit"){
    window.location = button.data("link")
}
});

当我单击按钮以删除行时,以上函数将调用以下函数:

function DeleteData(id, code)
 {
    swal({
        title: 'Are you sure?',
        text: "Do you want to delete " + code + "?" ,
        type: 'question',
        showCancelButton: true,
        confirmButtonColor: '#3085d6',
        cancelButtonColor: '#d33',
        confirmButtonText: 'Yes',
        showLoaderOnConfirm: true,
        preConfirm: function() {
          return new Promise(function(resolve) {
            $.ajax({ url: '../inc/call.php',
            data: {
                dados: JSON.stringify(id),
                caller: 'DeleteData',
                dataType: 'json'
            },
            type: 'POST'})
             .done(function(response){
                swal('Done!', response.message, response.status);
                updateDiv("reloader");
                $('#category').select2();

             })
             .fail(function(response){
                swal('Oops...', response.message, response.status);
                updateDiv("reloader");
                $('#category').select2();
             });
          });
        },
        allowOutsideClick: false     
     });
};

此ajax调用后发生我的问题。 看起来,在我调用一个用updateDiv("reloader");“刷新”整个div的函数之后。然后,我尝试使用$('#category').select2();将select转换为select2,但是它不起作用。

基本上,select转换为普通的select,将其转换为select2的代码不起作用。除此之外,即使我更改了select 2中的值,它也不会进行ajax调用以列出结果($('#category').change(function(e){

这样,我希望您对以下两种解决方案之一有所帮助: 1-使这个简单的事情起作用,因此刷新后,选择变为select2,并且可以与我创建的更改功能一起使用; 2-刷新后,使其如上工作,但默认选择是最后一个将列出所有要保持工作的列表(以避免一遍又一遍地选择类别并等待数据列表)(最佳选项);

任何帮助将不胜感激。 希望线程显示的很好。如果需要更改某些内容,请告诉我,我将对其进行更新。谢谢。

1 个答案:

答案 0 :(得分:1)

请使用

$('body')。delegate('#category','change',function(){

})

因为有些时间开发人员使用数据表 数据表未读取下一页直接dom