Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置html()后触发自定义事件_Javascript_Jquery - Fatal编程技术网

Javascript 设置html()后触发自定义事件

Javascript 设置html()后触发自定义事件,javascript,jquery,Javascript,Jquery,我有一个响应处理程序,用于替换ajax响应中的内容。我想在内容被替换后触发事件。这是响应处理程序: function(response) { /* animate to top if called from bottom pagination */ if ( caller === 'pag-bottom' && jq('#subnav').length ) { var top = jq('#subnav').pare

我有一个响应处理程序,用于替换ajax响应中的内容。我想在内容被替换后触发事件。这是响应处理程序:

function(response)
    {
        /* animate to top if called from bottom pagination */
        if ( caller === 'pag-bottom' && jq('#subnav').length ) {
            var top = jq('#subnav').parent();
            jq('html,body').animate({scrollTop: top.offset().top}, 'slow', function() {
                jq(target).fadeOut( 100, function() {
                    jq(this).html(response);
                    jq(this).fadeIn(100);
                });
            });

        } else {
            jq(target).fadeOut( 100, function() {
                jq(this).html(response);
                jq(this).fadeIn(100);
            });
        }
        jq('.item-list-tabs li.selected').removeClass('loading');
     // the event I want to trigger
        jq( document ).trigger( "buddyFilter:replaced", [ object, filter] );
    }
我的问题是这个事件触发得很早,所以我在事件上触发的代码没有正确计算div的大小,并且格式也不正确

我尝试了各种组合,试图连锁事件触发器,但我不能得到它的权利。我不能使用手动延迟,因为这样会导致视觉跳转,如果加载时间比时间慢,则不能始终工作

如何在呈现html()值时触发此事件

编辑:

这是一个类似于我的代码的JSFIDLE,但我必须修改它才能在FIDLE中工作。它显示在事件触发后,div的高度为0


您只需在实际HTML替换发生后立即触发事件:

jq(目标).fadeOut(100,函数(){
jq(this).html(response);
触发器(“buddyFilter:replaced”,[object,filter]);
法代因(100);
});

还请注意,您将完全相同的代码重复两次,因此最好将其包装在一个方法中,以使其干燥。

您只需在实际的HTML替换发生后立即触发事件:

jq(目标).fadeOut(100,函数(){
jq(this).html(response);
触发器(“buddyFilter:replaced”,[object,filter]);
法代因(100);
});

还请注意,您将完全相同的代码重复两次,因此最好将其包装在一个方法中,以使其干燥。

您只需在实际的HTML替换发生后立即触发事件:

jq(目标).fadeOut(100,函数(){
jq(this).html(response);
触发器(“buddyFilter:replaced”,[object,filter]);
法代因(100);
});

还请注意,您将完全相同的代码重复两次,因此最好将其包装在一个方法中,以使其干燥。

您只需在实际的HTML替换发生后立即触发事件:

jq(目标).fadeOut(100,函数(){
jq(this).html(response);
触发器(“buddyFilter:replaced”,[object,filter]);
法代因(100);
});

还要注意的是,您将完全相同的代码重复两次,因此最好将其包装在一个方法中以使其干燥。

您触发事件的时间太早了。试试这个:

            jq(target).fadeOut( 100, function() {
                jq(this).html(response);
                jq(this).fadeIn(100, function() {
                   //trigger the event herer
                });
            });

当然,您必须在两个地方执行此操作。

您触发事件的时间太早了。试试这个:

            jq(target).fadeOut( 100, function() {
                jq(this).html(response);
                jq(this).fadeIn(100, function() {
                   //trigger the event herer
                });
            });

当然,您必须在两个地方执行此操作。

您触发事件的时间太早了。试试这个:

            jq(target).fadeOut( 100, function() {
                jq(this).html(response);
                jq(this).fadeIn(100, function() {
                   //trigger the event herer
                });
            });

当然,您必须在两个地方执行此操作。

您触发事件的时间太早了。试试这个:

            jq(target).fadeOut( 100, function() {
                jq(this).html(response);
                jq(this).fadeIn(100, function() {
                   //trigger the event herer
                });
            });

当然,你必须在两个地方做这件事。

试着利用
.promise()
.then()


尝试利用
.promise()
。然后()


尝试利用
.promise()
。然后()


尝试利用
.promise()
。然后()



为什么不在动画完成后触发事件---在最后的
fadeOut
s回调中?我尝试了
jq(this).fadeIn(100).trigger(“buddyFilter:replaced”,[object,filter])
但它不起作用。为什么不在动画完成后触发事件——在上一次的
fadeOut
s回调中?我尝试了
jq(this).fadeIn(100).trigger(“buddyFilter:replaced”,[object,filter])
但它不起作用。为什么不在动画完成后触发事件——在上一次的
fadeOut
s回调中?我尝试了
jq(this).fadeIn(100).trigger(“buddyFilter:replaced”,[object,filter])
但它不起作用。为什么不在动画完成后触发事件——在上一次的
fadeOut
s回调中?我尝试了
jq(this).fadeIn(100).trigger(“buddyFilter:replaced”,[object,filter])但它不起作用。它仍然触发得太早,内容没有呈现,因此我的代码的div大小不正确。如果我加上1秒的延迟,那么它就可以工作了(带有视觉跳转)。一旦调用
jq(this).html(response)
,在执行任何进一步的JS代码之前,应该完全呈现内容。我建议你展示一把小提琴,因为这个问题可能与你的内容或其他内容有关。这把小提琴准确地显示了发生了什么,但我不得不改变了一点代码,但它突出了我将事件触发放入
fadeIn
回调(正如@PeterKA所指出的)的问题,它起了作用:是的,你是正确的,我过于匆忙地查看了代码,没有将其正确地放入正确的回调中。它仍然触发得太早,内容没有呈现,因此我的代码的div大小不正确。如果我加上1秒的延迟,那么它就可以工作了(带有视觉跳转)。一旦调用
jq(this).html(response)
,在执行任何进一步的JS代码之前,应该完全呈现内容。我建议你展示一把小提琴,因为这个问题可能与你的内容或其他内容有关。这把小提琴准确地显示了发生了什么,但我不得不改变了一点代码,但它突出了我将事件触发放入
fadeIn
回调(正如@PeterKA所指出的)的问题,它起了作用:是的,你是正确的,我过于匆忙地查看了代码,没有将其正确地放入正确的回调中。它仍然触发得太早,内容没有呈现,因此我的代码的div大小不正确。如果我加上1秒的延迟,那么它就可以工作了(带有视觉跳转)。一旦调用
jq(this).html(response)
,在执行任何进一步的JS代码之前,应该完全呈现内容。我建议你展示一把小提琴,因为这个问题可能与你的内容或其他内容有关。这把小提琴准确地显示了发生了什么,但我不得不改变了一点代码,但它突出了我将事件触发放入
fadeIn
回调(正如@PeterKA所指出的)的问题,它起了作用:是的,你是正确的,我太匆忙地看了看代码,没有把它写进c