将click事件绑定到角度链接器中的元素和子元素

时间:2017-03-09 15:11:19

标签: javascript jquery html css angularjs

我有一个基本上是一张大桌子的指令。在表格的一些单元格中,我有一些内容的div。每当点击div时,我想做一些事情(以我的代码中的console.log("clicked")为例)。

问题是div也包含其他html元素,如果点击其中一个后代html元素,则没有任何反应。因此,我想在单击父div和单击任何后代元素时执行某些操作。

单击div时会发生以下情况,但单击任何后代时不会执行以下操作:

link: function(scope, element) {
  element.on("click", function(e) {
    if (e.target.className.match('myclass')) 
       {
         console.log("Clicked!");
       }
    });
   }

如何点击div和元素内的任何元素并使用“myclass”确保上述情况发生?

1 个答案:

答案 0 :(得分:0)

您在活动中需要的是

if (e.target.className.match('myclass') || $(e.target).closest('.myclass')) {
      alert("Clicked!");
    }

函数closest()允许您搜索父母。

(我假设你的项目中有jQuery,因为它是标签的一部分)

话虽如此,我强烈建议你不要混淆jQuery和AngularJs,除非有必要。在大多数情况下,您可以在项目中完全不使用jQuery来实现类似的功能。

我相信你可以获得相同的功能,如果在你的模板中你只使用ng-click="someFunction()" - 它会在点击子元素时触发