如何检查某个特定事件监听器是否已绑定到该元素?例如:
myApp.directive("myDirective", function ($document) {
return {
restrict: "A",
scope: {},
link: function (scope, elem, attrs) {
var myListener = function () {
alert("Hello!!!");
};
elem.on("click", function () {
if (!$document.hasEvent("click", myListener)) { // Check in here
$document.on("click", myListener);
}
});
}
}
});
hasEvent
功能如何?提前感谢您的帮助......
答案 0 :(得分:1)
您可以将支票更改为:
if (!$document[0].onclick) { // Check in here
$document[0].onclick = myListener;
}
这是jsFiddle:http://jsfiddle.net/7mRQW/
答案 1 :(得分:-2)
您需要一个数组来存储您的事件和一个函数来检查给定的key
是否有事件,如下所示:
var myEvents = [];
function hasEvent(key) {
return myEvents.indexOf(key) >= 0;
}
然后,当您尝试link
elem
时,您需要检查它是否已有事件。如果是这样,什么也不做。否则,存储其key
并创建其事件。此外,只要elem
link
,就需要为myApp.directive("myDirective", function ($document) {
return {
restrict: "A",
scope: {},
link: function (scope, elem, attrs, elemKey) {
var myListener = function () {
alert("Hello!!!");
};
if (hasEvent.elemKey) {
return;
}
myEvents[myEvents.length] = elemKey;
elem.on("click", function () {
if (!$document.hasEvent("click", myListener)) { // Check in here
$document.on("click", myListener);
}
});
}
}
});
生成唯一键。我无法告诉你更多有关这方面的信息,因为你没有说明elem的可能值。
{{1}}