Javascript 设置html()后触发自定义事件
我有一个响应处理程序,用于替换ajax响应中的内容。我想在内容被替换后触发事件。这是响应处理程序: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
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