首页 > 解决方案 > 在 C# MVC 的 ajax jquery 中创建 Link() 时不调用 Click 事件

问题描述

标签: jqueryajaxasp.net-mvcrazor

解决方案


那是因为在被调用的时候$('.btnOpen').click运行在任何存在的东西上body,而你的 ajax 响应当时不在体内。因此,事件处理程序未注册到您的新链接。

相反,您应该使用来自 jQuery 的委托事件处理程序来使其动态侦听您的 DOM:

$('body').on('click', 'a.btnOpen', function () {
    alert("The Link was clicked");
});

function add() {
  $('#content').append('<a href="#" class="btnOpen">Click me dynamically</a>');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="content">
   <a href="#" class="btnOpen">Click me</a>
</div>

<button onclick="add()">Add link</button>

您希望将事件绑定到您知道存在的事物,并且尽可能接近您动态添加的内容。因此,例如,如果它们都驻留在一个 div 中,则使用该 div 创建.on处理程序。


推荐阅读