我正在使用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服务器并且返回事件调用此函数。如果有人能提供帮助,我们将不胜感激。
答案 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的位置。