Javascript 向jquery小部件添加回调
我想向jquery小部件添加回调 作为一个示例,我看到Dragable小部件中的回调都包含在以下内容中:Javascript 向jquery小部件添加回调,javascript,jquery,callback,widget,Javascript,Jquery,Callback,Widget,我想向jquery小部件添加回调 作为一个示例,我看到Dragable小部件中的回调都包含在以下内容中: $.ui.plugin.add("draggable", "connectToSortable", { // callbacks in here }) 这是否意味着我还必须在这个$.ui.plugin.add({})中包装我的回调;一点还有别的办法吗?比如,我可以在widget选项中设置一个函数来处理这个问题,这样调用我的网格看起来就像: var foo = { LoadIt: f
$.ui.plugin.add("draggable", "connectToSortable", {
// callbacks in here
})
这是否意味着我还必须在这个$.ui.plugin.add({})中包装我的回调;一点还有别的办法吗?比如,我可以在widget选项中设置一个函数来处理这个问题,这样调用我的网格看起来就像:
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
位的任何信息,也没有看到更改如何传递到setLevel
。setLevel
如何获得change
中的函数?如果传递给green5的任何内容都是一个选项,因此可以通过此.options访问,那么在If($.isFunction(callback))回调(level)中调用level
的callback
方法在哪里代码>来自哪里?我很困惑(我认为这对你来说是可行的:)
在示例(find)中,作者指出,我们可以像传递任何其他选项一样传递回调。如果我们重写他对小部件的调用方式,可能会更清楚:
var options = {
change: function(x){ alert("The color changed to "+x);}
}
$('.target').green5(options);
这样做的目的是将“change”选项与一个匿名函数绑定,该函数接受一个变量,并提醒用户颜色已更改为该变量。因此,呼吁
var callback = this.options.change;
检索作为“change”选项传递的匿名函数,并将其分配给变量callback
。线路
if ($.isFunction(callback)) callback(level);
只需检查回调是否确实是一个函数。它正在检查空值/传递不正确的参数。如果传入options.change的回调实际上是一个函数,那么我们用参数“level”调用它
除非我们从插件外部修改插件,否则不需要使用ui.plugin.add()
if ($.isFunction(callback)) callback(level);