热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

我能找到用jQuery绑定到元素上的事件吗?-CanIfindeventsboundonanelementwithjQuery?

Ibindtwoeventhandlersonthislink:我在这个链接上绑定了两个事件处理程序:<ahref#>ShowAlert&l

I bind two event handlers on this link:

我在这个链接上绑定了两个事件处理程序:

Show Alert

Javascript:

Javascript:

$(function()
{
  $('#elm').click(_f);
  $('#elm').mouseover(_m);
});

function _f(){alert('clicked');}
function _m(){alert('mouse over');}

Is there any way to get a list of all events bound on an element, in this case on element with id="elm"?

是否有方法获得绑定在元素上的所有事件的列表,在本例中是id="elm"的元素?

8 个解决方案

#1


462  

In modern versions of jQuery, you would use the $._data method to find any events attached by jQuery to the element in question. Note, this is an internal-use only method:

在现代jQuery版本中,您将使用$。_data方法,以查找由jQuery附加到该元素的任何事件。注意,这是一个内部使用的方法:

// Bind up a couple of event handlers
$("#foo").on({
    click: function(){ alert("Hello") },
    mouseout: function(){ alert("World") }
});

// Lookup events for this particular Element
$._data( $("#foo")[0], "events" );

The result from $._data will be an object that contains both of the events we set (pictured below with the mouseout property expanded):

美元的结果。_data将是一个包含我们设置的事件的对象(如下图所示的mouseout属性扩展):

Console output for $._

Then in Chrome, you may right click the handler function and click "view function definition" to show you the exact spot where it is defined in your code.

然后,在Chrome中,您可以右键单击处理程序函数并单击“视图函数定义”,以显示在代码中定义它的确切位置。

#2


59  

General case:

一般情况下:

  • Hit F12 to open Dev Tools
  • 按F12打开开发工具
  • Click the Sources tab
  • 单击“源”选项卡
  • On right-hand side, scroll down to Event Listener Breakpoints, and expand tree
  • 在右边,向下滚动到事件侦听器断点,并展开树
  • Click on the events you want to listen for.
  • 单击要侦听的事件。
  • Interact with the target element, if they fire you will get a break point in the debugger
  • 与目标元素交互,如果它们开火,您将在调试器中获得一个断点。

Similarly, you can:

类似地,您可以:

  • right click on the target element -> select "Inspect element"
  • 右键单击目标元素——>选择“Inspect element”
  • Scroll down on the right side of the dev frame, at the bottom is 'event listeners'.
  • 在dev框架的右侧向下滚动,底部是“事件监听器”。
  • Expand the tree to see what events are attached to the element. Not sure if this works for events that are handled through bubbling (I'm guessing not)
  • 展开该树,查看该元素上附加了哪些事件。不确定这是否适用于通过冒泡处理的事件(我猜不是)

#3


11  

I'm adding this for posterity; There's an easier way that doesn't involve writing more JS. Using the amazing firebug addon for firefox,

我把这个加给后代;有一种更简单的方法不需要编写更多的JS。使用令人惊叹的firebug插件为firefox,

  1. Right click on the element and select 'Inspect element with Firebug'
  2. 右键单击元素并选择“使用Firebug检查元素”
  3. In the sidebar panels (shown in the screenshot), navigate to the events tab using the tiny > arrow
  4. 在工具条面板(如屏幕截图所示)中,使用小的>箭头导航到events选项卡
  5. The events tab shows the events and corresponding functions for each event
  6. events选项卡显示每个事件的事件和相应的函数。
  7. The text next to it shows the function location
  8. 它旁边的文本显示函数位置

enter image description here

#4


6  

The jQuery Audit plugin plugin should let you do this through the normal Chrome Dev Tools. It's not perfect, but it should let you see the actual handler bound to the element/event and not just the generic jQuery handler.

jQuery审计插件插件应该允许您通过普通的Chrome开发工具进行审计。它并不完美,但它应该让您看到绑定到元素/事件的实际处理程序,而不仅仅是一般的jQuery处理程序。

#5


2  

While this isn't exactly specific to jQuery selectors/objects, in FireFox Quantum 58.x, you can find event handlers on an element using the Dev tools:

虽然这并不是针对jQuery选择器/对象的,但是在FireFox Quantum 58中。您可以使用Dev工具在元素上找到事件处理程序:

  1. Right-click the element
  2. 右键单击元素
  3. In the context menu, Click 'Inspect Element'
  4. 在上下文菜单中,单击“查看元素”
  5. If there is an 'ev' icon next to the element (yellow box), click on 'ev' icon
  6. 如果在元素(黄色框)旁边有一个“ev”图标,点击“ev”图标。
  7. Displays all events for that element and event handler
  8. 显示该元素和事件处理程序的所有事件

FF Quantum Dev Tools

#6


1  

I used something like this if($._data($("a.wine-item-link")[0]).events == null) { ... do something, pretty much bind their event handlers again } to check if my element is bound to any event. It will still say undefined (null) if you have unattached all your event handlers from that element. That is the reason why I am evaluating this in an if expression.

我使用了这样的if($._data($(“a.wine-item-link”)[0]))。事件== null){…做点什么,再次绑定事件处理程序}来检查我的元素是否绑定到任何事件。如果您从该元素中删除了所有事件处理程序,它仍然会说未定义(null)。这就是我用if表达式求值的原因。

#7


0  

When I pass a little complex DOM query to $._data like this: $._data($('#outerWrap .innerWrap ul li:last a'), 'events') it throws undefined in the browser console.

当我将一个复杂的DOM查询传递给$时。_data:美元。_data($('#outerWrap . innerwrap ul li:last a'), 'events')它在浏览器控制台中未定义地抛出。

So I had to use $._data on the parent div: $._data($('#outerWrap')[0], 'events') to see the events for the a tags. Here is a JSFiddle for the same: http://jsfiddle.net/giri_jeedigunta/MLcpT/4/

所以我必须用$。父div的数据:$._data($('#outerWrap')[0], 'events')来查看标记的事件。这里有一个JSFiddle: http://jsfiddle.net/giri_jeedigunta/MLcpT/4/

#8


0  

Note that events may be attached to the document itself rather than the element in question. In that case, you'll want to use:

注意,事件可以附加到文档本身,而不是相关的元素。在这种情况下,您需要使用:

$._data( $(document)[0], "events" );

And find the event with the correct selector:

用正确的选择器找到事件:

enter image description here

And then look at the handler > [[FunctionLocation]]

然后看看处理器> [[FunctionLocation]]

enter image description here


推荐阅读
  • 包含phppdoerrorcode的词条 ... [详细]
  • 本文深入探讨了Ajax的工作机制及其在现代Web开发中的应用。Ajax作为一种异步通信技术,改变了传统的客户端与服务器直接交互的模式。通过引入Ajax,客户端与服务器之间的通信变得更加高效和灵活。文章详细分析了Ajax的核心原理,包括XMLHttpRequest对象的使用、数据传输格式(如JSON和XML)以及事件处理机制。此外,还介绍了Ajax在提升用户体验、实现动态页面更新等方面的具体应用,并讨论了其在当前Web开发中的重要性和未来发展趋势。 ... [详细]
  • 本文深入探讨了 hCalendar 微格式在事件与时间、地点相关活动标记中的应用。作为微格式系列文章的第四篇,前文已分别介绍了 rel 属性用于定义链接关系、XFN 微格式增强链接的人际关系描述以及 hCard 微格式对个人和组织信息的描述。本次将重点解析 hCalendar 如何通过结构化数据标记,提高事件信息的可读性和互操作性。 ... [详细]
  • HTML5 Web存储技术是许多开发者青睐本地应用程序的重要原因之一,因为它能够实现在客户端本地存储数据。HTML5通过引入Web Storage API,使得Web应用程序能够在浏览器中高效地存储数据,从而提升了应用的性能和用户体验。相较于传统的Cookie机制,Web Storage不仅提供了更大的存储容量,还简化了数据管理和访问的方式。本文将从基础概念、关键技术到实际应用,全面解析HTML5 Web存储技术,帮助读者深入了解其工作原理和应用场景。 ... [详细]
  • 将Flash Cookies 应用于电子取证
    由于隐私问题,Flashcookie进来成为一个热点安全话题。不过从另一个角度讲,Flashcookie(即本地共享对象)却 ... [详细]
  • Thisquestionalreadyhasananswerhere:这个问题已经有了答案:HowcanIdisplayaJavaScriptobje ... [详细]
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom&amp;quot;echarts&amp;quot;;4、如果用到map(地图),还 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • 本文将介绍如何在混合开发(Hybrid)应用中实现Native与HTML5的交互,包括基本概念、学习目标以及具体的实现步骤。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 本文探讨了如何通过检测浏览器类型来动态加载特定的npm包,从而优化前端性能。具体而言,仅在用户使用Edge浏览器时加载相关包,以提升页面加载速度和整体用户体验。此外,文章还介绍了实现这一目标的技术细节和最佳实践,包括使用User-Agent字符串进行浏览器识别、条件加载策略以及性能监控方法。 ... [详细]
  • 探讨.NET技术与Silverlight中控件拖放及复制功能的实现方法
    Silverlight拖动复制控件,就是将控件从一个容器中向另一个容器中拖动时,不是移动控件而把该控件到另一个容器中。这种情形在程序中经常遇到ÿ ... [详细]
  • 开发工具WebDeveloper1.1.8https:addons.mozilla.orgen-USfirefoxaddon60以工具栏的形式对网页的(X)HTML、脚本、多媒体、 ... [详细]
  • 首先,我有点像jQuerynoob和整个PHPnoob,所以如果这是一个愚蠢的问题,我感到很抱歉(尽管我已经搜索了Internet,尤其是这个网站的上下无法弄清我的意思.错了).另 ... [详细]
  • ItriedtouseFirebugLite(viathebookmarkletandalsoaddingittooneofmywebsites).我尝试使用Fi ... [详细]
author-avatar
卖火柴的萌小猪_966
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有