javascript - 如何在不触发父 div 事件的情况下触发子 div 事件?

标签 javascript jquery html css asp.net

我正在尝试触发子 div 事件,但似乎触发的不是子 div,而是父 div 的点击事件。我尝试在子事件中使用 stopPropagation 但它似乎不起作用。

$(document).ready(function() {
  var lot = '<div class="divlot">This is a lot!</div>'
  var lineitem = '<div class="divlineitem">This is a lineitem!</div>'

  $("#container").on("click", function() {

    $("#container").append(lot);
  });

  $(".divlot").on("click", function(e) {
    e.stopPropagation();
    alert($(this).attr("class"));
    $(this).append(lineitem);
  });


});
#container {
  background-color: grey;
}
.divlot {
  background-color: red;
  padding-left: 20px;
}
.divlineitem {
  background-color: blue;
  padding-left: 20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>


<div id="container">Container</div>

最佳答案

事件处理程序只绑定(bind)到当前选中的元素;在您的代码进行事件绑定(bind)调用时,它们必须存在于页面上。

截至目前,您正在为页面中不存在的 divlot 使用直接事件处理程序绑定(bind),因此事件处理程序和 e.stopPropagation() 都不起作用/p>

由于您是动态添加事件,因此您需要使用 Event Delegation使用 .on()委托(delegate)事件方法。

使用绑定(bind)事件

$("#container").on("click", ".divlot", function(e) {
    e.stopPropagation();
    alert($(this).attr("class"));
    $(this).append(lineitem);
});

$(document).ready(function() {
  var lot = '<div class="divlot">This is a lot!</div>'
  var lineitem = '<div class="divlineitem">This is a lineitem!</div>'

  $("#container").on("click", function() {

    $("#container").append(lot);
  });

  $("#container").on("click", ".divlot", function(e) {
    e.stopPropagation();
    alert($(this).attr("class"));
    $(this).append(lineitem);
  });


});
#container {
  background-color: grey;
}
.divlot {
  background-color: red;
  padding-left: 20px;
}
.divlineitem {
  background-color: blue;
  padding-left: 20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>


<div id="container">Container</div>

关于javascript - 如何在不触发父 div 事件的情况下触发子 div 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30932185/

相关文章:

html - 如何制作元素从上到下(而不是从左到右)开始的 2 列布局?

javascript - AJAX 聊天提交仅适用于 $(document).keypress()

javascript - 如何让页面滚动触发鼠标悬停事件?

javascript - 固定标题和可滚动主体

html - 如何正确编写 CSS 属性选择器来提取所有 id 属性?

javascript - 带有缓动功能的 jquery 幻灯片放映/循环不起作用

javascript - 我不需要相关函数的返回值,哪种方法在系统运行时更快,是否使用返回值?

javascript - 用于添加/追加 3 个以上数组的循环说明

javascript - TouchableOpacity OnPress 不起作用

javascript - JavaScript 中的 "new Number(...)"和 "Number(...)"有什么区别?