.on 不适用于动态 html

.on not working on dynamic html

我正在创建拖放操作。当发生下降时,我创建了新的运行时 html 并想绑定它事件,所以我使用了以下 .on

 .on ( "event", "selector", function() {

但它不起作用。这是片段:

$( "#wrap .dragImages" ).on( "click", "button.edit-new-modal", function() {
    var photoId = $(this).attr('data-username');        
    alert(photoId);
});

.on 在拖放之前工作。但事后点击 "button.edit-new-modal" 没有任何反应!!怎么了?有什么解决办法吗?

尝试:

$(document.body).on( "click", "button.edit-new-modal", function() {
  var photoId = $(this).attr('data-username');        
  alert(photoId);
});

这是动态生成的 HTML,因此无法正常工作。尝试使用下面的代码片段

$(文档).on( "click", "button.edit-new-modal", 函数() {

    var photoId = $(this).attr('data-username');        
    alert(photoId);
});

这个

$( "#wrap .dragImages" ).on( "click", "button.edit-new-modal", function() {

应该是:

$(document).on( "click", "button.edit-new-modal", function() {

连接事件处理程序时,它们仅绑定到现有 HTML 个元素。

当您插入动态 HTML 时,您必须再次连接这些处理程序。

在您的情况下,您可以将事件处理程序设置包装在这样的函数中:

    function wireUpHandlers() {
        $( "#wrap .dragImages" ).on( "click", "button.edit-new-modal", function() {
            var photoId = $(this).attr('data-username');        
            alert(photoId);
        });
    }

在您的 document.ready 中调用此方法,然后在将动态 HTML 附加到页面后再次调用此方法