Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 文档事件ID_Javascript_Jquery - Fatal编程技术网

Javascript 文档事件ID

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?也许

我需要在events对象中标识文档上的特定事件。比如说

$(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:Scope
handlersRegistered
与任何其他变量一样:尽可能窄,但不能更窄。因此,如果它需要在其他代码的范围内,请确保它是。我认为事件注册和变量赋值没有任何联系。如果此事件的处理程序有可能未注册,则此决定是不正确的。@FeR-S:在上述情况下,它们是绝对相关的:在
handlersRegistered[“a”]=true时时,将注册“a”处理程序。当注册“a”处理程序时,接下来发生的事情(不能被中断)是
handlersRegistered[“a”]=true已执行。但如果我将在不存在变量
handlersRegistered
的文档的任何位置检查它,则@FeR-S:Scope
handlersRegistered
与任何其他变量一样:尽可能窄,但不能更窄。因此,如果它需要在其他代码的范围内,请确保它是。