gpt4 book ai didi

javascript - 在 jQuery 中绑定(bind)事件后,如何获取对事件处理函数的引用?

转载 作者:数据小太阳 更新时间:2023-10-29 05:06:33 24 4
gpt4 key购买 nike

如果我附加一个点击事件处理程序:

$(".selector").bind("click", function () {
// some handler function
});

如何获得对该函数的引用?这不起作用:

var refToFunc = $(".selector").bind("click");
typeof refToFunc === "object"; // I want the function

我认为 bind("eventname") 在那种情况下只返回 jQuery 对象而不是事件处理函数。它必须存储在某个地方。

最佳答案

非常有趣的问题。您可以像这样检索它:

var refToFunc = $(".selector").data("events")["click"][0].handler;

请注意,我们使用 [0] 是因为您有一组处理程序,以防您绑定(bind)多个处理程序。对于其他事件,只需更改为事件名称即可。

编辑通常,您可以使用以下插件获取事件的选定元素的所有处理程序(代码尚未优化):

$.fn.getEventHandlers = function(eventName){
var handlers = [];
this.each(function(){
$.each($(this).data("events")[eventName], function(i, elem){
handlers.push(elem.handler);
});
});
return handlers;
};

如何使用?

$(".selector").getEventHandlers("click");

它会返回一个包含所有事件处理程序的函数数组。

对于你的具体问题,你可以像这样使用这个插件:

var refToFunc = $(".selector").getEventHandlers("click")[0];

希望这对您有所帮助。干杯

关于javascript - 在 jQuery 中绑定(bind)事件后,如何获取对事件处理函数的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6631570/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com