为什么jquery源的这部分未定义?

时间:2014-01-14 00:52:10

标签: javascript jquery node.js knockout.js socket.io

我正在使用Jquery1.7.1构建一个应用程序,其中控制台收到错误:

for (n = 0; n < r.length; n++) s = r[n], (e || k === s.origType) && (!c || c.guid === s.guid) && (!l || l.test(s.namespace)) && (!d || d === s.selector || d === "**" && s.selector) && (r.splice(n--, 1), s.selector && r.delegateCount--, p.remove && p.remove.call(a, s));

未定义。执行此操作时出现此错误:

function goToIndex() {
pageView.setCurrentPage(pageView.getIndex());
pageView.setNav(pageView.getIndexNav());
ko.applyBindings(pageView);
}

哪个不涉及jquery所以我不确定为什么会发生这种情况。与此相关的唯一jquery是前一个函数上的单击处理程序,但它调用一个socket.io事件,该事件进入node.js服务器并且返回事件调用此函数。如果有人能提供帮助,我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

标题中的问题(&#34;为什么这部分jQuery源未定义?&#34;)已在评论中得到解答:jQuery 中没有任何部分未定义,它只是被要求处理一个未定义的变量。

问题问题(&#34;为什么我得到&#34; xxx未定义&#34;错误?&#34;)并不负责任,而不是没有更多来源来重现问题。

在评论中你提出了另一个问题:&#34;有人可以指出我应该看的方向&#34;。 @Blazemonger有答案:查看JavaScript调试器以确定问题的来源。

当您使用调试器进入代码时,理解此问题的当然有助于加载uncompressed version of your jQuery。基于您在问题中发布的jQuery片段(特别是&#34; delegateCount--&#34;),我说这个例外就在这里:

// Detach an event or set of events from an element
remove: function( elem, types, handler, selector, mappedTypes ) {
        // ... abbreviated

        // Remove matching events
        for ( j = 0; j < eventType.length; j++ ) {
            handleObj = eventType[ j ];

            if ( ( mappedTypes || origType === handleObj.origType ) &&
                 ( !handler || handler.guid === handleObj.guid ) &&
                 ( !namespaces || namespaces.test( handleObj.namespace ) ) &&
                 ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
                eventType.splice( j--, 1 );

                if ( handleObj.selector ) {
                    eventType.delegateCount--;
                }
                if ( special.remove ) {
                    special.remove.call( elem, handleObj );
                }
            }
        }

        // ... abbreviated
}

压缩的s变量与未压缩的handleObj变量匹配的位置。当你在那里输入调试器时,一定要检查局部变量的值,如果需要,请在调用堆栈中查看代码调用jQuery的位置。