3

更新: 很抱歉这个冗长的愚蠢问题。这是我的选择器的问题。无视帖子!

我有一个具有公共功能的小部件。我通常可以这样称呼:

$("#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]

可能是什么问题呢?

4

0 回答 0