javascript - 空div类上的js点击事件

标签 javascript jquery

我有如下三个 div:

这是一个JSFiddle .

$(document).on('click', '.top', function (e) {					
  console.log("Empty space clicked");	
});		
.top{    
    width: 208px;
    text-transform: uppercase;
    text-align: left;
    height: 34px;
    background-color: #F44336;
    border-bottom: 1px solid #ea1c0d;
    color: #ffffff;
    box-shadow: 0px 3px 3px 0px rgba(50, 50, 50, 0.1);
    padding: 3px 8px;
    cursor: auto;
  }
 .inner_1{
    font-size: 12px;
 }
  .inner_2{
   font-size: 11px;
    text-transform: none;
    line-height: 12px;
    margin-top: 5px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    display: inline-block;
 }
 
 .inner_1:hover,  .inner_2:hover {
    cursor: pointer;
        text-decoration: underline;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<div class="top">
  <div class="inner_1">Top content: This is full width</div>
  <div class="inner_2">Bottom</div>
</div>

从jsfiddle中可以看到,当点击.top时,会显示一条日志。

但是,我想让它仅在单击空白区域时显示日志,而不是在单击 inner_1inner_2 div 类时显示日志(因为它显示当前单击这两个类时的日志)。

实现这一目标的最佳方法是什么?

谢谢。

最佳答案

使用 jquery 中的 stopPropagation。这将阻止所有子 div 触发父 onClick

$(document).on('click', '.top > div', function (e) {                    
  e.stopPropagation();
});     

编辑: 上面的代码是建立在 OP 知道的基础上的,但这种方式对于浏览器来说更有效。

$('.top > div').on('click', function (e) {                    
  e.stopPropagation();
});     

关于javascript - 空div类上的js点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42518757/

相关文章:

javascript - Vue.js 应用程序中生产模式下静态文件的路径错误

javascript - 使用 Python 抓取并登录 Angular webabb

javascript - 同位素砌体的自动布局会覆盖排序吗?

jQuery .get 错误响应函数?

javascript - 如何将点击事件附加到以编程方式创建的 jquery 对象?

javascript - 按名称、价格过滤 JQuery 列表...json 数组,JQuery.grep()

javascript - 如何停止此页面上的jquery和prototype之间的冲突

javascript - 位置 : fixed not referring parent relative left position

javascript - 使用数据表行信息更新文本输入并从对话框编辑行

javascript - 如何使用对象正确设置插件的选项