在jquery插入之后 - 没有看到元素

时间:2013-02-11 08:17:52

标签: javascript jquery html dom

我有这个问题:
我通过jquery插入某些html。并且在插入的html中我有一个类,我已经绑定了一个函数。这个函数没有被称为,我有这种感觉,插入的html还没有被js看到。

我的插入代码。

$(function(){
  $('#einf').on('click', function(){
    $('<tr><td><a class="ame">delete</a></td></td></tr>').insertAfter('#append_tr');
  });
});

你可以假设,插入效果很好。这是我的绑定功能:

$(function(){
  $('.ame').on('click', function(){
     alert('test');
  }); 
});

我测试了已经存在的具有相同类ame的元素,它正在使用它。感谢您的帮助和指导

4 个答案:

答案 0 :(得分:3)

您必须在添加的元素上再次运行click bind。 也许这样的事情会起作用:

$('<tr><td><a class="ame">delete</a></td></td></tr>').insertAfter('#append_tr').find('.ame').on('click', function(){
    alert('test');
});

答案 1 :(得分:1)

尝试使用事件委派:http://jsfiddle.net/xehu9/

$('#einf').on('click', '.ame', function(e){ //<-----pass it here.
    e.stopPropagation(); //<---------stop the event bubbling here.
    alert('test');
});

这是因为您尝试在页面准备好时在dom中实现单击时不存在。

来自文档:

  

事件处理程序仅绑定到当前选定的元素;它们必须存在于您的代码调用.on()时的页面上。

答案 2 :(得分:1)

尝试.live()而不是.on()

http://jsfiddle.net/ThobiasN/Pt3db/

  $(function(){ 
    $('#einf').on('click', function(){ alert ('some');
      $('<tr><td><a class="ame">delete</a></td></td></tr>').insertAfter('#append_tr');
    });
    $('.ame').live('click', function(){
       alert('test');
    }); 
  });

答案 3 :(得分:0)

你不能引用一个dinamically创建的元素,因为当javascript运行时它不在DOM中,我建议你使用TEMPLATES而不是dinamic html内容。

但是,如果你想遵循这种方法,jquery允许使用concadinating元素方法:

$(function(){
$('#einf').on('click', function(){
$('<tr><td><a class="ame">delete</a></td></td></tr>')
.insertAfter('#append_tr')
.on('click',function(){
 alert('test');
});
});
});