Javascript 文档事件ID
我需要在events对象中标识文档上的特定事件。比如说Javascript 文档事件ID,javascript,jquery,Javascript,Jquery,我需要在events对象中标识文档上的特定事件。比如说 $(document).click(function () { console.log(1) }); $(document).click(function () { console.log(2) }); var events = $._data(document, "events"); console.log(events); 当我记录所有“点击”事件时,它们之间没有区别: 如何向每个事件添加自定义ID?也许
$(document).click(function () {
console.log(1)
});
$(document).click(function () {
console.log(2)
});
var events = $._data(document, "events");
console.log(events);
当我记录所有“点击”事件时,它们之间没有区别:
如何向每个事件添加自定义ID?也许我可以使用名称空间,或者我可以更改guid
我需要检查:“特定事件是否存在?”您可以绑定参数并将其传递给回调侦听器以识别类型
$(document).click(function (type) {
console.log(type)
}.bind(this,"i-am-click"));
$(document).click(function (type) {
console.log(type)
}.bind(this,"i-am-another-click"));
var events = $._data(document, "events");
console.log(events);
更新
要识别事件数组中的特定事件对象,可以执行以下操作
$(document).click(
(function(){
var fn = function(){ // Your callback function
console.log('i-am-click');
};
fn.event_id=1; // Adding id to the callback.
return fn; // returning the function after adding id
})()
);
$(document).click(
(function(){
var fn = function(){ // Your callback function
console.log('i-am-another-click');
};
fn.event_id=2; // Adding id to the callback.
return fn; // returning the callback function after adding id
})()
);
var events = $._data(document, "events");
// Find the events in the event array using filter
// This will return an array of match event with id in events array
events.click.filter(function(ev){return ev.handler.event_id==1;}); // event id you are looking for
您可以绑定参数并将其传递给回调侦听器以标识类型
$(document).click(function (type) {
console.log(type)
}.bind(this,"i-am-click"));
$(document).click(function (type) {
console.log(type)
}.bind(this,"i-am-another-click"));
var events = $._data(document, "events");
console.log(events);
更新
要识别事件数组中的特定事件对象,可以执行以下操作
$(document).click(
(function(){
var fn = function(){ // Your callback function
console.log('i-am-click');
};
fn.event_id=1; // Adding id to the callback.
return fn; // returning the function after adding id
})()
);
$(document).click(
(function(){
var fn = function(){ // Your callback function
console.log('i-am-another-click');
};
fn.event_id=2; // Adding id to the callback.
return fn; // returning the callback function after adding id
})()
);
var events = $._data(document, "events");
// Find the events in the event array using filter
// This will return an array of match event with id in events array
events.click.filter(function(ev){return ev.handler.event_id==1;}); // event id you are looking for
你澄清说: 我想知道[是否]…事件处理程序已注册 使用标志:
var handlersRegistered = {};
$(document).click(function() {
console.log("a");
});
handlersRegistered["a"] = true;
$(document).click(function() {
console.log("b");
});
handlersRegistered["b"] = true;
如果在某个时候您需要知道处理程序“a”是否已注册:
if (handlersRegistered["a"]) {
// Yes it is
} else {
// No, it isn't
}
不需要在jQuery的内部乱搞
(我使用的是
handlersRegistered[“a”]
而不是handlersRegistered.a
,以防您想为这些无效标识符使用标签。)您已经澄清说:
我想知道[是否]…事件处理程序已注册
使用标志:
var handlersRegistered = {};
$(document).click(function() {
console.log("a");
});
handlersRegistered["a"] = true;
$(document).click(function() {
console.log("b");
});
handlersRegistered["b"] = true;
如果在某个时候您需要知道处理程序“a”是否已注册:
if (handlersRegistered["a"]) {
// Yes it is
} else {
// No, it isn't
}
不需要在jQuery的内部乱搞
(我使用的是
handlersRegistered[“a”]
而不是handlersRegistered.a
,以防您要为这些无效标识符使用标签。)事件“现有”是什么意思?如果你用你想写的信息来展示代码,这会很有帮助。这听起来像是XY问题。你到底为什么要这么做?我有一个挂起点击事件的脚本。在我需要检查这个事件是否正确后exist@FeR-S:恐怕这并不能说明什么。一个“存在”的事件是什么意思?如果你用你想写的信息来展示代码,这会很有帮助。这听起来像是XY问题。你到底为什么要这么做?我有一个挂起点击事件的脚本。在我需要检查这个事件是否正确后exist@FeR-S:恐怕这不能说明什么。谢谢你的回复。但我如何使用它来检查是否存在“我点击”事件<代码>$。每个(事件、函数(i,val){if(…)…})代码>是,我想知道注册了什么“我是另一个点击”事件处理程序。对不起,我的英语太差了。)@FeR-S:它还依赖于jQuery的内部结构,可以从一个dot版本更改到下一个dot版本。如果你能回答人们问你的问题,我们可能会帮助你做到这一点,而不会制造一些脆弱的东西。@T.J.Crowder我会更准确地描述任务,谢谢你的评论。但纳迪拉斯卡猜到了我的意思,并首先给出了他的工作决定。谢谢你的回复。但我如何使用它来检查是否存在“我点击”事件<代码>$。每个(事件、函数(i,val){if(…)…})代码>是,我想知道注册了什么“我是另一个点击”事件处理程序。对不起,我的英语太差了。)@FeR-S:它还依赖于jQuery的内部结构,可以从一个dot版本更改到下一个dot版本。如果你能回答人们问你的问题,我们可能会帮助你做到这一点,而不会制造一些脆弱的东西。@T.J.Crowder我会更准确地描述任务,谢谢你的评论。但NadirLaskar猜到了我的意思,并首先给出了他的工作决定。我认为事件注册和变量赋值并没有任何联系。如果此事件的处理程序有可能未注册,则此决定是不正确的。@FeR-S:在上述情况下,它们是绝对相关的:在handlersRegistered[“a”]=true时执行代码>时,将注册“a”处理程序。当注册“a”处理程序时,接下来发生的事情(不能被中断)是handlersRegistered[“a”]=true代码>已执行。但如果我将在不存在变量handlersRegistered
的文档的任何位置检查它,则@FeR-S:ScopehandlersRegistered
与任何其他变量一样:尽可能窄,但不能更窄。因此,如果它需要在其他代码的范围内,请确保它是。我认为事件注册和变量赋值没有任何联系。如果此事件的处理程序有可能未注册,则此决定是不正确的。@FeR-S:在上述情况下,它们是绝对相关的:在handlersRegistered[“a”]=true时执行代码>时,将注册“a”处理程序。当注册“a”处理程序时,接下来发生的事情(不能被中断)是handlersRegistered[“a”]=true代码>已执行。但如果我将在不存在变量handlersRegistered
的文档的任何位置检查它,则@FeR-S:ScopehandlersRegistered
与任何其他变量一样:尽可能窄,但不能更窄。因此,如果它需要在其他代码的范围内,请确保它是。