Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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
Javascript 向jquery小部件添加回调_Javascript_Jquery_Callback_Widget - Fatal编程技术网

Javascript 向jquery小部件添加回调

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

我想向jquery小部件添加回调

作为一个示例,我看到Dragable小部件中的回调都包含在以下内容中:

$.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);