如果单击或焦点触发,如何调用foo

Rey*_*raa 14 javascript angularjs angularjs-directive

我有一个指令,我绑定focusclick事件到元素:

app.directive('mydirective', function () {
  return {
    link: function ($scope, $element, $attrs) {
      $element.bind('click focus', function (e) {
        foo(e);
      });
    }
  };
});
Run Code Online (Sandbox Code Playgroud)

我想在fooif focusclickor事件被触发时调用一次,但是当点击element时,focus事件被触发foo并被调用2次.如何防止召唤foo2次?

编辑:是的.将悬停与点击和焦点混合起来并不是一个好主意.谢谢大家

ade*_*neo 5

您可以去除事件,这只会触发第一个事件的函数

$element.bind('click focus', function(e) {
    if ( !$(this).data('fired') ) foo(e);

    $(this).data('fired', true);

    setTimeout(function(self) {
        $(self).data('fired', false);
    }, 200, this);

});
Run Code Online (Sandbox Code Playgroud)

小提琴