在ajax完成从事件触发后运行jQuery

时间:2015-08-24 01:25:06

标签: javascript jquery ajax

我有以下代码:

$(document).on('click', '.imageItem', function(event) {
    $(this).slideUp()
});

每当点击.imageItem时,一个单独的脚本会激活Ajax(我无法控制另一个脚本)来操纵DOM。

因此.imageTable会暂时滑动并隐藏,但在其他脚本完成AJAX DOM操作后会重新出现。

我试过等到Ajax完成但这不起作用:

$(document).on('click', '.imageItem', function(event) {
  $(document).ajaxComplete(function() {

    $(this).slideUp();

   });
});

我不确定为什么它不起作用。

1 个答案:

答案 0 :(得分:1)

您可能需要跟踪点击了哪个项目,然后使用该项目隐藏在ajaxComplete中:

$(document).ajaxComplete(function (event, xhr, settings) {
    if (img) {
        img.slideUp('slow');
        img = null;
    }
});

//To keep track of what item was clicked
var img = null;

$(".imageItem").on("click", function () {
    img = $(this);
});

您可以在this fiddle中看到一个有效的示例,但正如@charlietfl在评论中指出的那样,如果其他脚本使用jQuery,它就会起作用。