如何扩展jQuery';是否用函数替换以接受回调函数?
这应该很容易,对吧?然而,我在任何地方都找不到这种功能的例子。问题是,在执行replaceWith()之后,我想对那些写入DOM的元素执行一些操作,但是如果在replaceWith()调用之后尝试对它们执行一些操作,它们还不存在,因此我需要确保replaceWith()完全完成。我只是想让这样的东西起作用:如何扩展jQuery';是否用函数替换以接受回调函数?,jquery,callback,Jquery,Callback,这应该很容易,对吧?然而,我在任何地方都找不到这种功能的例子。问题是,在执行replaceWith()之后,我想对那些写入DOM的元素执行一些操作,但是如果在replaceWith()调用之后尝试对它们执行一些操作,它们还不存在,因此我需要确保replaceWith()完全完成。我只是想让这样的东西起作用: $('#foo').replaceWith('some text', function() { //do something else here }); 想法?您可以创建自己的函
$('#foo').replaceWith('some text', function() {
//do something else here
});
想法?您可以创建自己的函数,调用
replaceWith
:
$.fn.replaceWithCallback = function(replace, callback){
var ret = $.fn.replaceWith.call(this, replace); // Call replaceWith
if(typeof callback === 'function'){
callback.call(ret); // Call your callback
}
return ret; // For chaining
};
只需执行以下操作即可创建回调功能:
$(“#myElement”).replaceWith(函数(){
//调用函数
)
您可以在尝试立即处理时显示不起作用的代码吗?replaceWith
不是异步的,因此这应该可以正常工作。编辑我的打赌是,您仍然试图使用\foo
执行某些操作,但它不会存在,因为您刚刚替换了它……如果,为什么需要回调>replaceWith
不是异步的?您可以在调用replaceWith
后立即调用您的方法。我知道我在这方面做得很晚,但可能会帮助其他人。这不是解决这个问题的正确方法。虽然函数将作为他的要求之一被调用,但它不可能作为回调来工作。他在hi中明确提到s要求“如果我在调用replaceWith()后立即尝试对它们执行某些操作,它们还不存在,因此我需要确保replaceWith()已完全完成”。在函数执行之前,它可能会以某种方式作为replaceWith返回,但这只是运气。因此,我建议不要使用此方法创建回调。@Jehanzeb.Malik:replaceWith
是同步的。我猜他是在尝试使用缓存的jQuery对象。例如var$a=$('#foo');$a.replaceWith('a'))
。尝试使用$a
将不起作用,因为该元素已不存在。我遇到了相同的问题,尝试此操作:toUpdate.find('.edinting').replacetwith(edintition);
initAddInscription(toUpdate.find('.edinting'));