最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Find callback functions added with jQuery on DOM elements - Stack Overflow

programmeradmin0浏览0评论

I am currently testing this in Mozilla FireFox 3.0.5 using FireBug 1.3.0 with jQuery 1.2.6.

First try

document.getElementById("x").onfocus = function ()
{
    var helloWorld = "Hello World";
};

FireBug console:

document.getElementById("helloworld").onfocus.toString() = function body as a string

$("#helloworld").get(0).onfocus.toString() = function body as a string


Second try

$("#helloworld").focus(function ()
{
    var helloWorld = "Hello World";
});

FireBug console:

document.getElementById("helloworld").onfocus.toString() = FireBug returns nothing

$("#helloworld").get(0).onfocus.toString() = FireBug returns nothing


What am I missing here? Why can't I find the callbacks when attaching them with jQuery?

I am currently testing this in Mozilla FireFox 3.0.5 using FireBug 1.3.0 with jQuery 1.2.6.

First try

document.getElementById("x").onfocus = function ()
{
    var helloWorld = "Hello World";
};

FireBug console:

document.getElementById("helloworld").onfocus.toString() = function body as a string

$("#helloworld").get(0).onfocus.toString() = function body as a string


Second try

$("#helloworld").focus(function ()
{
    var helloWorld = "Hello World";
});

FireBug console:

document.getElementById("helloworld").onfocus.toString() = FireBug returns nothing

$("#helloworld").get(0).onfocus.toString() = FireBug returns nothing


What am I missing here? Why can't I find the callbacks when attaching them with jQuery?

Share Improve this question edited Jan 14, 2009 at 12:24 cllpse asked Jan 14, 2009 at 11:58 cllpsecllpse 21.7k37 gold badges133 silver badges170 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 6

To view events that jQuery has bound use :

$("#helloworld").data('events');

If you bind the focus as per your example and you run the above in firebug console it will return

Object focus=Object

jQuery doesn't attach the callbacks directly, instead it stores them internally in a registry. Whenever an event is triggered, jQuery looks in the registry and calls the callback that you asked for earlier.

This gives you the advantage of being able to stack multiple callbacks onto a single element's event, but it has the disadvantage that you must use jQuery's event handler routines to set, get, and remove the callbacks.

发布评论

评论列表(0)

  1. 暂无评论