为什么可以'我的jQuery.Widgets命名空间无法访问
Why can't my jQuery.Widgets namespace be accessed?
我已经读了很多关于为我的插件使用jQuery.Widget Factory的优点的文章。其中一个功能是jQuery.widget如何为您的小部件创建名称和平。这很有吸引力,因为我可以(自然地)在jQuery上下文中保持当前的名称空间。
问题:
我不断收到"$(".myWidget").namespace.newWay不是函数"错误。
对于以下元素
<div class="myWidget"></div>
此示例代码有效:
虽然很好。。。这不是我想要达到的。。。因为我仍然希望我的命名空间得到尊重。
var workingVersion = {
_init: function () { /* Do Something*/ }
};
$.widget("ui.workingVersion", workingVersion);
$(document).ready(function () {
$('.myWidget').workingVersion();
});
但是,我的代码失败:
var namespace = namespace || { };
;namespace.newWay = (function ($, window, document, undefined) {
return function (options) {
var self = this;
this._create = function () {
// Do something
},
this._init = function() {
// Do something
},
this.publicFunction = function () {
// Do something
};
};
})(jQuery, window, document);
$(document).ready(function () {
$.widget("ui.namespace.newWay", namespace.newWay); //<-- Namespace does get appended
$('.myWidget').namespace.newWay({ type: 'testing' }); //<-- But still fails here
});
我的问题是:
为什么会失败?
相关阅读:
- 了解jQuery UI小部件:教程
- 开发jQuery UI 1.8小工具的提示
这个答案可能来得有点晚,但我也在为同样的事情而挣扎,不得不读一些书。
$()在一般情况下
$()
实例是分布在不同命名空间上的不同函数的无命名空间快捷方式列表。您可以通过以下方式向快捷方式列表添加更多功能:
$.fn.myFunction = function() {
...
};
然后将通过调用访问
$("...").myFunction();
如果添加两个同名函数,后一个函数将覆盖第一个函数。
小工具
当你创建一个有名称空间的小部件时,正如你所期望的,它是用它的名称空间创建的,但对于$()
,它是在没有名称空间的情况下添加的,这是一个简化的带快捷方式的真实小部件的快捷方式。这是使用$.widget.bridge()
完成的。因此,您可以通过如下方式创建到$()的同名链接:
$.widget.bridge("namespace_myFunction", $.namespace.myFunction );
然后像这样访问您的小工具:
$("#myDiv").namespace_myFunction();
要直接将小部件与它的原始名称空间一起使用,您可以这样调用它:
$.namespace.myWidget(
{
option1: "",
option2: ""
},
$("#div")
);
希望这能澄清一点。。。
相关文章:
- 在javascript中使用命名空间
- 为什么不推荐使用“with”?是否有更好或其他方法可以“下降”到对象的命名空间
- javascript中的命名空间,IDE中支持代码完成/内容辅助's
- 如何使用javascript命名空间
- js命名空间和变量范围
- html,js-如何限制元素"范围“-命名空间
- 转换自的JavaScript命名空间
- 命名空间与自调用函数
- 什么's当前命名空间/类中JavaScript子命名空间/类的语法
- 无法加载Ace.js编辑器模式和主题(命名空间项目&AMD require.js&grunt
- jQuery命名空间和使用“;这个“;
- 在Firebug控制台中监视javascript命名空间变量
- jQuery事件命名空间是否可以包含破折号
- 用自定义javascript全局命名空间替换窗口
- 如何在Typescript中导出具有其他名称的命名空间
- 从html文件中的脚本标记调用非全局命名空间函数
- 正在测量全局命名空间的污染
- 谷歌闭包命名空间冲突
- socket.io:断开连接事件 - “传输关闭”、“客户端命名空间断开连接”、“传输错误”和“强制关闭”
- 为什么可以'我的jQuery.Widgets命名空间无法访问