javascript - 单击事件未在子 div 中捕获

标签 javascript jquery html css

我正在尝试使用基本的 HTML、CSS 和 JQuery 制作列表组件。我希望在单击事件时选择列表项。当我单击列表项文本周围的空间(padding space)时,将捕获单击事件。但是当我点击文本(也是整个 file-name div 占用的空间)时,没有捕获点击事件。可能是因为里面的child div?任何帮助,将不胜感激。谢谢。

function selectFile(id, key) {
  if($(id).hasClass('selected')) {
    $(id).removeClass('selected');
  } else {
    $(id).addClass('selected');
  }
}

$('.file-list-section').on('click', function(event) {
  selectFile('#'+event.target.id, event.target.dataset.key);
})
.file-row {
    padding: 10px;
    border-bottom: 1px solid lightgray;
    cursor: pointer;
}
.file-list-section .file-row.selected {
    background: #26a69a;
    color: white;
}
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<div id="fileList" class="file-list-section">
  <div class="file-row" id="fileId_0" data-key="cd58ef701e28f6df8.jpg">
    <div class="file-name">cd58ef701e28f6df8.jpg</div>
  </div>
  <div class="file-row" id="fileId_1" data-key="a682e06e25c5c86.jpg">
    <div class="file-name">a682e06e25c5c86.jpg</div>
  </div>
  <div class="file-row" id="fileId_2" data-key="Jefree" copy.jpeg="">
    <div class="file-name">Jefree copy.jpeg</div>
  </div>
</div>

最佳答案

您的代码专注于整个列表的类,而不是单独处理每个列表项。我已经简化了你的 jQuery 说如果我点击“这个”.file-row 切换选择的类。这允许多个突出显示。如果您一次只想要一个,请在每次点击时清除所有“选定”类。

$('.file-row').removeClass('selected');

$('.file-row').click(function(){
$(this).toggleClass('selected');
})
.file-row {
    padding: 10px;
    border-bottom: 1px solid lightgray;
    cursor: pointer;
}
.file-list-section .file-row.selected {
    background: #26a69a;
    color: white;
}
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<div id="fileList" class="file-list-section">
  <div class="file-row" id="fileId_0" data-key="cd58ef701e28f6df8.jpg">
    <div class="file-name">cd58ef701e28f6df8.jpg</div>
  </div>
  <div class="file-row" id="fileId_1" data-key="a682e06e25c5c86.jpg">
    <div class="file-name">a682e06e25c5c86.jpg</div>
  </div>
  <div class="file-row" id="fileId_2" data-key="Jefree" copy.jpeg="">
    <div class="file-name">Jefree copy.jpeg</div>
  </div>
</div>

关于javascript - 单击事件未在子 div 中捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45810501/

相关文章:

javascript - 根据里面的单选按钮更改 div 的类?

javascript - 是否有可能将表单输入到另一个html表单中

javascript - 将JSON导入到html(表格)过滤结果

javascript - 有没有办法停止多次调用一个函数?

javascript - 想了解 JavaScript 的基础层(不是基础)架构

jquery - 从 api 自动完成

html - Bootstrap-Carousel 不工作

html - 基本 HTML/CSS - 无法居中

升级到新的 jQuery 版本后 jQuery 将不会返回数据

javascript - HTML Table Row nth-child 动态内容问题