javascript - 使用 AJAX 删除项目后未触发 .ajaxComplete?

标签 javascript jquery ajax

我正在使用 Rails 4、Bootstrap 和 Masonry。我有以下代码用于 jQuery Masonry 来排列我的 div,在 application.js 中:

$(function(){
  $('#pins').masonry({
    itemSelector: '.box',
    isFitWidth: true
  });
});

var masonryUpdate = function() {
    setTimeout(function() {
        $('#pins').masonry();
    }, 200);
}

$(document).on('click', masonryUpdate);
$(document).ajaxComplete(masonryUpdate);

它以其他方式工作,但是当我尝试使用 AJAX 删除项目时,Masonry 不会更新。这是我的 destroy.js:

$('.deleting').bind('ajax:success', function() {  
    $(this).closest('.poista').fadeOut();
});

在上面的代码示例之后,如何强制 Masonry 重新加载?由于某种原因 .ajaxComplete(masonryUpdate) 未触发?

最佳答案

来自 jQuery Documentation在 ajaxComplete 上,它似乎不对给定参数执行函数调用,而是在 Ajax 请求完成时调用处理函数。

handler Type: Function( Event event, jqXHR jqXHR, PlainObject ajaxOptions ) The function to be invoked.

最好的选择是使用匿名函数来调用masonryUpdate

$(document).ajaxComplete(function(event, xhr, settings) {
  masonryUpdate();
};

编辑

最好将砌体规范缓存在变量中。

var mas = $('#pins').masonry({
    itemSelector: '.box',
    isFitWidth: true
});

然后你可以在该变量上调用 masonry

var masonryUpdate = function() {
  setTimeout(function() {
    mas.masonry('reload');
  }, 200);
}

关于javascript - 使用 AJAX 删除项目后未触发 .ajaxComplete?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28495814/

相关文章:

javascript - 如果返回数据错误,如何防止函数运行

javascript - 无效的调用对象和兼容性

javascript - 为什么我的角色在 2D 横向卷轴中移动不顺畅?

php - 如何使用 AJAX 发布多个 JQuery 值并避免对象错误

javascript - 如何通过 HTML 下拉或选择元素实现自动完成功能?

javascript - 为什么滚动时音频停止播放?

javascript - setTimeout(fn, 0) 和 setTimeout(fn, 1) 有什么区别?

javascript - jQuery JavaScript 不适用于 Wordpress,对无冲突模式语法感到困惑

javascript - 当我选中 1 和 2 复选框时,我在 asp.net webform 中已经有 3 个复选框和 1 个文本框,然后结果文本框将为 1,2

asp.net - 调整 ajax asp Accordion 尺寸