点击事件和ajax div刷新问题

时间:2019-03-27 10:24:50

标签: javascript php jquery

我正尝试使用ajax调用刷新div,但由于某些原因,它只会在首次点击时触发,这是我做错了。

我第一次单击按钮时,它一切都很好,在此之后什么也没发生(脚本其余部分的加载部分工作正常)

这是我的javascript代码:

GeomFit <- ggproto("GeomFit", GeomRect,
                   setup_data = environment(GeomBar$setup_data)$f)

2 个答案:

答案 0 :(得分:1)

您必须添加选择器参数,否则事件将直接绑定而不是委托,仅当元素已经存在时才起作用(因此对于动态加载的内容不起作用)。

请参见http://api.jquery.com/on/#direct-and-delegated-events

$(document).on('click','.btn-filtrar' ,function(){
  let id = $(this).closest('tr').data('id');
  let filter_type = $(this).closest('tr').data('type');
  let sort_order = document.getElementById(filter_type +'_sort-order_' + id).value;
  //console.log(id, filter_type, sort_order);


  $.ajax({
    url: "index.php?route=module/eot_filter/saveFilter&token=<?php echo $token; ?>",
    type: "POST",
    data: {
      id:id,
      filter_type:filter_type,
      sort_order:sort_order
    },
    success: function (result) {
      $("#"+ filter_type +"").load(" #"+ filter_type +"");
    }           
  });
});

答案 1 :(得分:1)

我建议您Click Here来更好地了解为什么使用$(document).on(“ click”,“ YOUR SELECTOR”)...而不是$(“ YOUR SELECTOR”) .on(“ click”,..)。

因此,在您的情况下,代码应类似于:

$(document).on('click','.btn-filtrar' ,function(){
  let id = $(this).closest('tr').data('id');
  let filter_type = $(this).closest('tr').data('type');
  let sort_order = document.getElementById(filter_type +'_sort-order_' + id).value;
  //console.log(id, filter_type, sort_order);

    $.ajax({
        url: "index.php?route=module/eot_filter/saveFilter&token=<?php echo $token; ?>",
        type: "POST",
        data: {
          id:id,
          filter_type:filter_type,
          sort_order:sort_order
        },
        success: function (result) {
          $("#"+ filter_type +"").load(" #"+ filter_type +"");
        }           
      });
    });