javascript - 动态绑定(bind)新行为

标签 javascript jquery

我有这个 HTML:

<div class="bold knowmore login" id="j-6">
<span>...</span>
</div>

和这个 jQuery:

$(function(){
  $(".login").on("click", function(){ 
     console.log('login clicked!');
     $(".bold.knowmore").removeClass("login").addClass("displayAdvert");
  });

  $(".displayAdvert").on("click",function(){
    console.log("display was clicked!");
  }); 
});

但输出总是:

login clicked!

但是,由于某些原因,HTML更新了但是事件总是调用点击登录。 有人知道我该如何解决它?

最佳答案

您需要使用委托(delegate)事件方法

您正在动态分配 .displayAdvert 类,因此您需要将 .on 方法与动态元素委托(delegate)一起使用:

我想你的故事中有一个静态父级,所以使用它的 ID:

$(function(){
  $(".login").on("click", function(){ 
     console.log('login clicked!');
     $(".bold.knowmore").removeClass("login").addClass("displayAdvert");
  });

  $("#parent").on("click", ".displayAdvert", function(){
    console.log("display was clicked!");
  }); 
});

http://api.jquery.com/on/#direct-and-delegated-events

关于javascript - 动态绑定(bind)新行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24246447/

相关文章:

java - 表单未使用 Javascript 提交

javascript - build 和 dist 文件夹有什么区别?

javascript - 重复 jQuery 数据表 AJAX 调用的内存管理

javascript - 为什么 $get() 函数太晚了?

javascript - 拖动一个变换元素导致在拖动开始时跳转开始

javascript - 选择新 tr 后将所选 tr 颜色改回原样

javascript - 正则表达式 : Capture multiple groups using quantifier

javascript - 更新 Observablehq react 环境中的单元格值

javascript - 正则表达式 至少使用 3 个任意字符

javascript - 根据下拉值显示元素数量的问题