记录事件ID

时间:2017-04-13 08:40:42

标签: javascript jquery

我需要在events对象中识别文档上的特定事件。例如

$(document).click(function () {
      console.log(1)
});

$(document).click(function () {
      console.log(2)
});

var events = $._data(document, "events");
console.log(events);

enter image description here

当我记录所有“点击”事件时,它之间没有区别:

如何为每个活动添加自定义ID?也许我可以使用命名空间,或者我可以更改 guid

我需要检查:“特定事件是否存在?”

2 个答案:

答案 0 :(得分:2)

您可以绑定并将参数传递给回调侦听器以标识类型

$(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

答案 1 :(得分:1)

你已经澄清说:

  

我想知道[如果] ...事件处理程序已经注册

使用标志:

`git config --global core.editor "vim"`

如果在某些时候你需要知道处理程序“a”是否已注册:

var handlersRegistered = {};
$(document).click(function() {
    console.log("a");
});
handlersRegistered["a"] = true;

$(document).click(function() {
   console.log("b");
});
handlersRegistered["b"] = true;

无需在jQuery的内部进行讨论。

(我正在使用if (handlersRegistered["a"]) { // Yes it is } else { // No, it isn't } 而不是handlersRegistered["a"],以防您想为这些无效标识符使用标签。)