.on没有在动态HTML上工作

时间:2015-05-14 06:27:23

标签: javascript html jquery-events

我正在创造拖放的东西。当drop发生时我创建了新的运行时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" !!之后没有任何事情发生!怎么了?任何解决方案?

4 个答案:

答案 0 :(得分:1)

尝试:

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

答案 1 :(得分:0)

这是动态生成的HTML,因此无法使用。尝试使用以下代码段

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

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

答案 2 :(得分:0)

这个

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

应该是:

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

答案 3 :(得分:0)

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

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

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

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

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