如何为动态生成的 div 创建 onClick 函数

How to create onClick function for a dynamically generated div

我正在尝试为 div 实现 onClick 函数,该函数是在提交页面时根据一些验证生成的。我正在尝试从外部 js 文件实现相同的功能。

HTML 设计类似于:

<div id="QViewInfo" style="top: 207px; left: 531.5px;">
    //dynamically generated
    <div>
    ---
    ----
    </div>
</div>

现在,我正在尝试实现如下所示的 onClick 函数:

$('img.popUpClose.popUpCloseQview').each(function (index) {
    $(this).on("click", function (e) {
        //DO something
    });
});

但问题是,这个 $('img.popUpClose.popUpCloseQview') 元素第一次出现在代码中。在提交按钮点击后发生变化,并且根据情况出现此弹出消息并且此功能随时无法使用。

也尝试了一些其他选项。但其中 none 有效。

请指教

谢谢, 阿尼克特

您可以使用事件委托 on() 将点击事件附加到元素 #QViewInfo 的所有 div,例如:

$('#QViewInfo').on('click', 'div', function(){
    //DO something
})

注意: 无需使用 each() 循环。

希望对您有所帮助。

$('#QViewInfo').append('<div>Div 3</div>');

$('#QViewInfo').on('click', 'div', function(){
    console.log($(this).text());
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="QViewInfo" style="top: 207px; left: 531.5px;">
  <div>Div 1</div>
  <div>Div 2</div>
</div>

带有注释代码的工作片段:

var img = '<img src="/Images/...." onclick="alert(\'QView.close();\')" alt="Close Quick View" class="popUpClose popUpCloseQview">';

$('.oosInfo').append(img);

$('#QViewInfo').on('click', 'img.popUpClose.popUpCloseQview', function(){ 
  alert("A"); 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="QViewInfo"> 
  <div class="oosInfo"> 
    <div class="alertImgDiv"> 
      <span class="oosAlertImg"></span> 
    </div> 
    
  </div> 
</div>

如果在jquery中动态生成div,可以添加点击事件。例如:

var div = $("<div>");
div.click(function(){//dostuff});

$("#QViewInfo").append(div);