更新: 很抱歉这个冗长的愚蠢问题。这是我的选择器的问题。无视帖子!
我有一个具有公共功能的小部件。我通常可以这样称呼:
$("#mygrid").myGrid( "MyFunction", args );
问题:
但在某些情况下,该函数没有被调用。
这里有一些琐事
- 我的小部件源自我创建的另一个(基本)小部件。
- 为基本小部件调用时,相同的功能起作用
- 该函数不会在子小部件中被覆盖。
- 相同的函数适用于同一父级的另一个子小部件,其代码与我前面提到的相同,除了小部件的名称和 DOM 元素。
现在,这里有一些重要信息。
问题小部件中的类似函数有效,当我进入调用时,我发现jquery-ui.js中以下函数中的两个调用存在差异:
$.widget.bridge = function( name, object ) {
var fullName = object.prototype.widgetFullName || name;
$.fn[ name ] = function( options ) {
var isMethodCall = typeof options === "string",
args = slice.call( arguments, 1 ),
returnValue = this;
// allow multiple hashes to be passed on init
options = !isMethodCall && args.length ?
$.widget.extend.apply( null, [ options ].concat(args) ) :
options;
if ( isMethodCall ) {
this.each(function() {
var methodValue,
// Rest of the code.
在这里,对于我没有被调用的函数,它不会进入那个this.each
. 当我检查this
指针时,有区别。对于被调用的函数,其内容this
如下:
0: div#myGrid
context: document
length: 1
selector: "#mygrid"
__proto__: Object[0]
但是对于没有被调用的函数,缺少第一项和长度属性。
context: document
selector: "#mygrid"
__proto__: Object[0]
可能是什么问题呢?