如何仅将容器绑定到.click()事件?

时间:2016-07-14 14:45:43

标签: javascript jquery css onclick

我希望用户输入打开手风琴式,但即使我点击红色框内的任何其他元素 - 文本,图像等,也会触发.click()事件。

我想只拥有"外部"空格导致事件触发。

我如何做到这一点?



$('#box').click(function(e) {
  console.log(e);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="box" style="width:80%;background:red;">
  <table>
    <tr>
      <td><img src="http://i.imgur.com/NaCmGyX.jpg" style="width:50px;height:50px;border-radius:50%;"></td>
      <td><b>John McDerpenstein</b></td>
      <td><p>
      A blurb goes here
      </p></td>
    </tr>
  </table>
</div>
&#13;
&#13;
&#13;

fiddle

5 个答案:

答案 0 :(得分:0)

$myPath = 'C:\my\file.txt'
$information | Set-Content -Path $myPath
$mypath | Invoke-Item

答案 1 :(得分:0)

您可以使用var app = angular.module('plunker', ['ngRoute']); 直接检查活动的target属性以查看它是否为#box元素:

is()

Updated fiddle

答案 2 :(得分:0)

只需检查e.target.id,看它是否与您想要的外框的特定id相匹配。示例如下:

$('#box').click(function(e) {
  if (e.target.id === "box")
    console.log('click');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="box" style="width:80%;background:red;">this is the outer box
  <table>
    <tr>
      <td><img src="http://i.imgur.com/NaCmGyX.jpg" style="width:50px;height:50px;border-radius:50%;"></td>
      <td><b>John McDerpenstein</b></td>
      <td><p>
      A blurb goes here
      </p></td>
    </tr>
  </table>
</div>

答案 3 :(得分:0)

如果要将事件添加到父容器,则必须在所有不需要单击事件的子元素上停止传播

示例:

由于#box点击并且框是您的容器

你需要给图像一个id并停止传播

$('#imageID').click(function(e){

e.stopPropagation();

})

使用上面的示例,当您单击图像时,不会发生任何事情,但如果您单击红色容器,那么您的事件将会记录。

答案 4 :(得分:0)

最好的方法是在对孩子进行点击时阻止该事件:

.sublime-completions