在jquery之后,看不到insert元素
after jquery insert - element isnot seen
我有这个问题:
我正在通过jquery插入某些html。在插入的html中,我有一个绑定了函数的类。这个函数没有被调用,我感觉js还没有看到插入的html。
我的插入代码。
$(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
的元素进行了测试,它正在使用它。感谢您的帮助和指导
您必须在添加的元素上再次运行click-bind。也许这样的东西会起作用:
$('<tr><td><a class="ame">delete</a></td></td></tr>').insertAfter('#append_tr').find('.ame').on('click', function(){
alert('test');
});
尝试使用事件委派:http://jsfiddle.net/xehu9/
$('#einf').on('click', '.ame', function(e){ //<-----pass it here.
e.stopPropagation(); //<---------stop the event bubbling here.
alert('test');
});
之所以会发生这种情况,是因为您正试图在页面准备就绪时实现对dom中不存在的elem的点击。
来自文档:
事件处理程序仅绑定到当前选定的元素;它们必须在代码调用.on().时存在于页面上
尝试.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');
});
});
您不能引用通常创建的元素,因为当javascript运行时,它不在DOM中,我建议您使用TEMPLATES而不是dinamic html内容。
然而,如果您想遵循这种方法,jquery允许连接元素方法:
$(function(){
$('#einf').on('click', function(){
$('<tr><td><a class="ame">delete</a></td></td></tr>')
.insertAfter('#append_tr')
.on('click',function(){
alert('test');
});
});
});
相关文章:
- CKEditor Widget-阻止编辑可编辑元素本身
- 如何设置html元素填充的动画
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 使用clickToggle并在单击另一个元素时关闭元素
- 单击时将焦点更改为元素
- 表追加而不附加最后一个元素
- 如何在jQuery中获取元素的形式
- 我可以获得相对于被点击元素的确切点击位置吗
- 在函数中添加数组元素的数值
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 将视口底部滚动到元素底部
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何使用jquery处理php循环通过元素
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 在Jquery detachment()和appendTo()之后定位元素
- Insert使用GSAP将SVG元素复制到DOM中
- 在jquery之后,看不到insert元素