Jquery ui 向jQueryUI小部件添加新方法
jQuery UI文档提供了一个示例,如下所示:Jquery ui 向jQueryUI小部件添加新方法,jquery-ui,Jquery Ui,jQuery UI文档提供了一个示例,如下所示: $.widget("ui.dialog", $.ui.dialog, { open: function() { console.log("open"); return this._super(); } }); 这对我使用UI1.12.1是有效的,当对话框打开时,我会看到预期的日志条目 但是,使用相同的技术重新创建jQueryUI选项卡的removed.url()方法时不会抛出
$.widget("ui.dialog", $.ui.dialog,
{
open: function()
{
console.log("open");
return this._super();
}
});
这对我使用UI1.12.1是有效的,当对话框打开时,我会看到预期的日志条目
但是,使用相同的技术重新创建jQueryUI选项卡的removed.url()方法时不会抛出错误“UncaughtTypeError:$(…)。url不是函数”。这是我的代码:
$.widget("ui.tabs", $.ui.tabs,
{
url: function (index, url)
{
console.log("url");
$(this.data("uiTabs").anchors[index]).attr("href", url);
return this;
}
});
除了url()方法是创建的而不是扩展的之外,这里还有什么不同?有可能执行我正在尝试的操作吗?有可能,但是我不确定日志后面的那一行,即
.data()
方法在这里似乎无效
也许你的意思是:
$.widget("ui.tabs", $.ui.tabs, {
url: function(index, url) {
$(this.anchors[index]).attr("href", url);
}
});
但是我不确定日志后面的那一行,也就是说,
.data()
方法在这里似乎无效
也许你的意思是:
$.widget("ui.tabs", $.ui.tabs, {
url: function(index, url) {
$(this.anchors[index]).attr("href", url);
}
});
正如我所说,我得到一个错误,$(…).url不是一个函数,所以我根本无法调用代码。在任何情况下,该数据行都在独立函数中工作。马克,你完全正确。独立函数之所以能够工作,是因为它具有不同的作用域,而且在新的插件上下文中,data()并不像您所说的那样存在。我看到的最初错误是由于错误地调用该方法引起的。我使用的是旧式的$(…).url(…)语法,需要是$(…).tabs('url',…)。正如我所说的,我得到一个错误,$(…).url不是一个函数,所以我根本无法调用代码。在任何情况下,该数据行都在独立函数中工作。马克,你完全正确。独立函数之所以能够工作,是因为它具有不同的作用域,而且在新的插件上下文中,data()并不像您所说的那样存在。我看到的最初错误是由于错误地调用该方法引起的。我使用的是旧式的$(…).url(…)语法,需要是$(…).tabs('url',…)。