我正在尝试解决jQuery侦听器在一个页面上附加到DOM元素而不是另一个在我不熟悉的复杂Web应用程序中的另一个问题的问题。
问题: 有一个子菜单应该悬停在主菜单项上。页面有两个版本(Legacy和New),表面上应该运行非常相似的代码(页面内容略有不同,但UI代码表面上应该是相同的),两者都有这个菜单。
在Legacy版本中,菜单功能正常,但在新版本中,此子菜单不会在悬停时呈现。当我查看"事件监听器"下的Chrome开发工具时对于相关的DOM元素,我看到虽然旧版页面为mouseover
和mouseout
附加了相应的处理程序,但新页面却没有。
我希望解决此问题的过程是找到在Legacy版本中附加事件侦听器的内容,然后通过调试来调查新版本中没有附加这些内容的原因。这是我遇到麻烦的地方。
以下是我对活动的看法:
mouseout:
li.submenu:
handler: function (a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b}
arguments: null
caller: null
elem: li.submenu
length: 1
name: ""
prototype: Object
constructor: function (a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b}
__proto__: Object
__proto__: function Empty() {}
<function scope>
isAttribute: false
lineNumber: 3
listenerBody: "function (a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b}"
node: li.submenu
sourceName: "https://myServer.com/jquery/1.7.1/jquery-min.js"
type: "mouseout"
useCapture: false
我不确定如何使用此信息来查找附加此处理程序的实际代码,我需要查看该代码以确定此处理程序未在新页面版本中附加的原因。使用jQuery-min会使它复杂化,我无法换掉版本。
是否有一种方法可以使用此信息确定此处理程序的来源?
谢谢!
答案 0 :(得分:1)
对于绑定事件,您需要选择元素。
您可以使用选择器 - li.submenu
或.submenu
,并在所有JavaScript文件中搜索这两个字符串。这些选择器应该与jQuery的on
或bind
或其他事件绑定方法(如addEventListener