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

时间:2012-01-26 18:05:40

标签: jquery callback

这应该很简单,对吗?然而,我无法在任何地方找到任何这种功能的例子。问题是,在我执行replaceWith()之后,我想对那些写入DOM的元素做一些事情,但是如果我在replaceWith()调用之后尝试对它们做些什么,它们就不存在了我需要确保replaceWith()完全完成。我只想要这样的事情发挥作用:

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

思想?

2 个答案:

答案 0 :(得分: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
};

答案 1 :(得分:0)

只需执行以下操作即可创建回调功能:

$("#myElement").replaceWith(function() {
  // call a function
);

并替换一个单词而不是内部html:

$("#derp").text(function(index, text) {
  // call a function here
  return text.replace('old', 'new');
});