【问题标题】:Event listener if div is reloaded重新加载 div 时的事件监听器
【发布时间】:2018-12-27 07:14:06
【问题描述】:

在一些 AJAX 查询中,在 response.done 中我刷新了一些 div 并且它工作正常,问题是这个刷新不刷新另一个函数(这个函数填充了另一个 div 内的内容 html() 刷新的) .我正在考虑一个技巧来添加一个 事件 以在该 div 重新加载时进行监听,我午餐我的 getAmount() 函数。

我尝试在 AJAX 中重新加载部分后添加该功能,但它不起作用。

file1.phtml

ajaxRequest = jQuery.ajax({
...
ajaxRequest.done(function (response, textStatus, jqXHR) {
    jQuery("#shopping-cart-table").load(location.href + " #shopping-cart-table"); //Here I reload my div.
});

file2.phtml

function getAmount() {
    var some = jQuery(this).attr('data-subtotal');
    jQuery('#shopping-cart-table .data').each(function(){
        jQuery('.ship-cart-vendor-header').each(function(){
            jQuery(this).find('.not-reached').html(some);
        });
    });
}

【问题讨论】:

  • 如果你正在监听被替换的 dom 内部的变化,那么你的事件不会受到影响。看起来你想做的是不好的做法。我认为您应该替换 dom 中的元素,然后在 .done 函数中调用该事件。否则你可以添加 $('body').on('change', '.yourElementClass', function(){ ...在这里做点什么... });
  • 您在 ajax 成功处理程序中调用 load。这将导致向服务器发送两个请求。不能直接用第一个AJAX-response吗?
  • @feeela 我不明白你的问题
  • @Martin M 这个:var priceed = jQuery(".price").html(); $('body').on('change', priceed, function(){ alert('changed');}); 不起作用

标签: javascript jquery events listener


【解决方案1】:

你必须在load回调中调用你的getAmount函数,完全重新加载后意味着什么:

jQuery("#shopping-cart-table").load(location.href + " #shopping-cart-table", function(){
    getAmount();
});

【讨论】:

  • 我已经测试过了,但它不起作用,在这种情况下,我必须等待加载 div 完成,然后我午餐 getAmount(); 我无法检测加载操作 div 的时间结束了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-13
相关资源
最近更新 更多