如何扩展jQuery的replaceWith函数以接受回调函数?

oce*_*tna 5 jquery callback

这应该很容易,对吧?但是我无法在任何地方找到此类功能的任何示例。问题是,在我执行replaceWith()之后,我想对写入DOM的那些元素做一些事情,但是如果我尝试在replaceWith()调用之后立即对它们做一些事情,那么它们还不存在。我需要确保replaceWith()已完全完成。我只想要这样的事情:

$('#foo').replaceWith('some text', function() {
     //do something else here
});
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

Roc*_*mat 5

您可以使自己的函数调用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
};
Run Code Online (Sandbox Code Playgroud)

  • 我知道我对此很迟,但可能会帮助其他人。这不是此问题的正确解决方案。尽管一个函数将被调用,这是他的要求之一,但它可能无法作为回调工作。他在要求中明确提到:“如果我尝试在replaceWith()调用之后立即对它们执行操作,那么它们还不存在,因此我需要**确保replaceWith()已完全完成**”。在函数执行之前,它可能以某种方式与replaceWith返回一起工作,但这很幸运。因此,我建议不要使用此方法创建回调。 (4认同)