Jquery回调函数
问题描述:
我在创建回调函数时遇到了问题。首先,据我所知,回调就像一个参数,当其“父”函数中的所有动作完成时触发。例如:Jquery回调函数
$('p').hide('slow', function() {
$(this).show('slow');
});
起初<p>
被隐藏起来,只有事后再次显示。
如何将这种回调应用于随机插件中?
例如一个插件看起来是这样的:
$.fn.myPlugin = function(settings) {
return this.each(function() {
settings = $.extend({ onShow: null }, settings);
$(this).hide('slow'); /*This action should happen first (First action)*/
if ($.isFunction(settings.onShow))
settings.onShow.call(this);/*Callback should fire after First action has stopped*/
}
});
};
$(document).ready(function()
$('p').myPlugin({
onShow: function() {
alert('My callback!');/*Both actions(element hiding and alert)
fire simultaneously, but I need alert
to fire after element is hidden*/
}
});
});
答
A callback function
是一个函数,它被传递给另一个函数/方法并在某个点被调用。
如果我们创建一个像
function mightyplugin(foo, callback){
// big code block here
callback.apply(this, [foo]);
}
的功能,我们现在有一个功能,它调用另一个函数。在这个例子中,它通过它分析one
参数并在this
范围内调用我们的回调函数。
的调用看起来像
mightyplugin("Bar!", function(param){
alert(param);
});
我们传递了一个匿名函数(更precisly,参考),以mightyplugin()
,我们可以在那里访问我们的参数,因为我们称之为一个范围和匿名函数参数数组(其中只包含原始参数)。
这些构造必须已经由插件实现,否则您需要创建自己的功能。
答
随机插件,您可以不适用它。如果在不同事件发生时插件未写入触发回调函数,则不能使用它们。
答
function loadAjax(paramUrl, paramData, paramType, paramAsync) {
var result = ""
$.ajax({
url: paramUrl,
data: paramData,
type: paramType,
async: paramAsync,
success: function (res) {
result = res
},
error: function (data) {
alert("Unexpected error: " + data.val());
}
});
return result;
}
你究竟想完成什么? – quantumSoup 2010-06-29 12:49:24
我正在尝试回调以正确的方式工作,就像在大多数jQuery方法中一样。 $(document).ready(function(){*在这里发生的Everething发生在Dom被加载之后,但之前没有,所以它是一个回调* /});我想知道如何在我的插件中写回调 – tylik 2010-06-29 16:12:15