代码之家  ›  专栏  ›  技术社区  ›  Fil

$(document).on('click','\preparingforimport',function()使用第一个选定的筛选器属性值

  •  0
  • Fil  · 技术社区  · 7 年前

    $(document).on('click', '.filterBtn', function() {
        let filter = $('#status').find(":selected").val();
        $('#preparingforimport').attr('data-filter', filter)
    });
    

    它获取当前过滤器并将其用作另一个下拉列表的数据属性,如果单击该下拉列表,它将执行此代码。

    $(document).on('click', '#preparingforimport', function() {
        let filter = $(this).data('filter');
    
        if (filter == 'unshipped') {
            swal({
                title: 'You are about to export shipments',
                text:  "Do you want to process all the unshipped data exported?",
                type:  'warning',
                showCancelButton:   true,
                confirmButtonColor: '#546220',
                confirmButtonText:  'Yes',
                cancelButtonColor:  '#d33',
                cancelButtonText:   'No',
            }).then((result) => {
                if (result.value) {
                    let tr       = $('#ShipmentsDataTable').find('tr');
                    let shipment = [], a, href, id;
    
                    for (var i = 0; i < tr.length; i++) {
                        a    = $(tr[i]).find('td:first-child > a');
                        href = a.attr('href');
    
                        if (href != undefined) {
                            id = href.split('/')[4];
                            shipment.push(id);
                        }
                    }
    
                    $.ajax({
                        type:'POST',
                        url:'/shipment/markprocess',
                        data: {
                            _token: $("meta[name='csrf-token']").attr('content'),
                            shipments: shipment
                        },
                        success: function (response, textStatus, jqXHR) {
                            if (response.message) {
                                themeNotify(response);
                                $("#status").val("in-process");
                                $('.filterBtn').trigger('click');
                            }
                            $('.buttons-csv').trigger('click');
                        },
                        error: function (data, textStatus, jqXHR) {
                            themeNotify(data);
                        }
                    });
                }
            })
        }
    
        else {
            $('.buttons-csv').trigger('click');
        }
    });
    

    问题是当用户选择另一个过滤器并再次单击 .filterBtn $(document).on('click', '#preparingforimport', function() 在中使用了第一个选定的筛选器属性值 data-filter 总是即使有多少次我选择了另一个过滤器。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Jeto    7 年前

    尝试替换:

    $('#preparingforimport').attr('data-filter', filter)
    

    使用:

    $('#preparingforimport').data('filter', filter)
    

    说明:

    • 第二个,就像 .prop 等同于 data-

    或者,作为 jQuery doc page 说:

    访问,然后不再访问或更改(所有数据值 然后存储在jQuery的内部)。