javascript - 更改页面加载后动态添加的元素的 onclick 处理程序

标签 javascript jquery

我有以下 DOM 结构。

<div class="purchase-section">
   <div class="purchase">
      <input type="submit" id="add-to-cart" class="btn" name="add" value="Add to Cart"> <span class="rc-or">Or</span>
      <button class="btn rc-button" id="btn-buy-now" onclick="event.preventDefault(); window.location='https://example.com?productId=681';">Buy Now - 3 installment</button>
   </div>
</div>

按钮元素是由页面加载后运行的脚本添加的。我需要更改此按钮的 onclick 处理程序。我尝试跟随但它不起作用。

$(document).ready(function() {
$('.purchase-section').on('change', '.purchase', function(){
    $("#btn-buy-now")[0].onclick = null;
    $("#btn-buy-now").click(function() { alert("done") });
  });
});

有人可以帮我解决这个问题吗?

最佳答案

使用 $("#btn-buy-now").removeAttr("onclick"); 完全删除 onclick ,然后将事件委托(delegate)给动态添加的元素。

$("static_parent").on("event", "dynamic_element", function () {
});

$(".purchase").on("click", "#btn-buy-now", function () {
  /* code */
});

关于javascript - 更改页面加载后动态添加的元素的 onclick 处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28050464/

相关文章:

javascript - 我似乎无法使用 componentWillUnmount 可靠地删除监听器

javascript - 将相关元素嵌套在一起父/子

具有子节点的元素的 JavaScript 委托(delegate)

javascript - AngularJS 中短名称和全名的自定义过滤器

javascript - 在输入字段鼠标悬停显示工具提示

javascript - 循环设置超时

javascript - 如何编写一个 jQuery 函数来迭代连续编号的选择器

Jquery Ui 从数据库自动完成

javascript - JavaScript 中的 touchstart 不再返回 TouchList

javascript - @each 在 ember 指南中的作用