用于单击类的Jquery侦听器,但单击其中的图标时无法正常工作

时间:2016-01-21 23:36:59

标签: javascript jquery

首先,我在这里找不到这个问题,所以我不知道它是否已被回答。

我有一个监听我站点中所有点击的人,然后调用一个函数来检查目标是否有类" wave"。如果是这样,它会显示波浪效果。

我有这个类的tile,它工作正常,除了它们有大图标,如果你点击它们,它就不会将它识别为该类的目标。

我试图把所有的牌都放在一个div里面,但不知怎的,它不会把它识别为这个类的目标(我假设它认为是点击了里面的目标)。

我试图把“真正的'在听众的最后,如果冒泡的方向可以帮助我,但它没有。

有什么想法吗?提前谢谢,抱歉我的无知。

的jsfiddle

    <div class="tile-container">
  <div class="tile efecteona">
   <h3 class="titol-tile">Gràfics</h3>
   <i class="fa fa-bar-chart tile-icon "></i>
  </div>
</div>

&#34; efecteona&#34;将是&#34; wave&#34;类     https://jsfiddle.net/qtLvef8o/2/

4 个答案:

答案 0 :(得分:1)

正如其他答案所指出的那样,target返回实际点击的元素,在这种情况下是图标而不是带有类的div。

既然你使用jQuery,为什么不使用它的委托语法呢?

$(document).on('click', '.efecteona, button', addOnaEffect);

并在你的手中设置target = this

https://jsfiddle.net/qtLvef8o/4/

更新了演示

答案 1 :(得分:0)

当你询问e.target时它会得到i元素,而i元素没有你需要的类,也没有标记名按钮。

在您的第console.log(target);行附近添加此var target = e.target;,您就会看到我在说什么。

答案 2 :(得分:0)

单击元素时,事件会一直冒泡到文档,而目标始终是初始化它的元素。在您的情况下,您的代码似乎假设target是一个tile元素,而实际上它也可以是icon元素。

由于您在使用jQuery的问题上进行了标记,因此有一个简单的解决方案。使用jQuery closest方法。

var target = $(e.target).closest('.efecteona, button').get(0);

<强> Code example

答案 3 :(得分:0)

target错误就是这种情况。

我尝试通过重置目标来解释当它是具有该类的父级时(有点脏,可以优化/更好地编写,但它只是为了明确显示目标问题)

https://jsfiddle.net/OxyDesign/wbxvqt2b/1/