Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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
如何扩展jQuery';是否用函数替换以接受回调函数?_Jquery_Callback - Fatal编程技术网

如何扩展jQuery';是否用函数替换以接受回调函数?

如何扩展jQuery';是否用函数替换以接受回调函数?,jquery,callback,Jquery,Callback,这应该很容易,对吧?然而,我在任何地方都找不到这种功能的例子。问题是,在执行replaceWith()之后,我想对那些写入DOM的元素执行一些操作,但是如果在replaceWith()调用之后尝试对它们执行一些操作,它们还不存在,因此我需要确保replaceWith()完全完成。我只是想让这样的东西起作用: $('#foo').replaceWith('some text', function() { //do something else here }); 想法?您可以创建自己的函

这应该很容易,对吧?然而,我在任何地方都找不到这种功能的例子。问题是,在执行replaceWith()之后,我想对那些写入DOM的元素执行一些操作,但是如果在replaceWith()调用之后尝试对它们执行一些操作,它们还不存在,因此我需要确保replaceWith()完全完成。我只是想让这样的东西起作用:

$('#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'));