[英]Adding a callback to a jquery widget
我想为jquery小部件添加一个回调。
作为一个例子,我看到可拖动小部件中的回调都包含在以下内容中:
$.ui.plugin.add("draggable", "connectToSortable", {
// callbacks in here
})
这是否意味着我还必须在$ .ui.plugin.add({})中包装我的回调; 位? 还有另一种方法吗? 就像,我可以在窗口小部件选项中有一个功能可以处理这个,所以调用我的网格看起来模糊地像:
var foo = {
LoadIt: function(url, formid){
var bar = '',
$('#baz').grid({
title: {somevar : true},
rowcontent: {data: setup and populate rows},
onComplete: function(){
//mycallback could go here
}
});
}
}, // another grid loader, etc.
在我的情况下,我使用网格。 网格通过ajax调用加载一些json数据,然后,现在dom填充了网格,我想用它做一些操作(例如,在悬停时添加背景颜色)。 所以我想能够作为网格的一部分进行调用:
onComplete : function(){//add my background color on hover here};
有关如何将回调添加到jquery小部件的任何提示或建议?
我发现一个让我困惑的例子:
var Green5 = {
setLevel: function(x){
//...
this.element.css({background: greenlevels[level]});
var callback = this.options.change;
if ($.isFunction(callback)) callback(level);
},
// ... rest of widget definition
};
$.widget("ui.green5", Green5);
$('.target').green5({change: function(x) { alert ("The color changed to "+x); } });
在一个网站上发现这个,解释如何将回调添加到jquery小部件,但我没有看到任何关于$.ui.plugin.add
位的内容,也没有看到如何change
传递到setLevel
。 setLevel
如何获得正在change
的函数? 如果只是传递给green5的任何东西都是一个选项,因此可以通过this.options访问,那么在if ($.isFunction(callback)) callback(level);
调用level
的callback
方法在哪里if ($.isFunction(callback)) callback(level);
来自? 我很困惑。 :(
在示例( 此处找到)中,作者指出我们可以像传递任何其他选项一样传递回调。 如果我们重写他如何调用这个小部件可能会更清楚:
var options = {
change: function(x){ alert("The color changed to "+x);}
}
$('.target').green5(options);
这样做是将“更改”选项绑定到一个匿名函数,该函数接受一个变量并提醒用户颜色已更改为该变量。 因此,电话
var callback = this.options.change;
检索作为“更改”选项传递的匿名函数,并将其分配给变量callback
。 这条线
if ($.isFunction(callback)) callback(level);
只需检查回调是否确实是一个函数。 它正在检查空值/不正确传递的参数。 如果在options.change中传递的回调实际上是一个函数,我们用参数“level”来调用它。
除非我们从外部修改插件,否则不需要使用ui.plugin.add()(参见此处的示例)。
我认为这可能适用于你:)
help_foo = function (){
alert('help !!!');
}
var callback = 'help_foo';
(callback)(function (){
callback failed
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.