与jquery after()行为混淆
confused with jquery after() behavior
下面是一段让我抓狂的jquery代码
var count = 0;
$('#some-element-id').click(function(){
var currentElement = '#new-div-id-'+count;
$(currentElement).after($('<div id="new-div-id-'+(++count)+'">Hello World!<span class="delete_me">x</span></div>'));
});
$(".delete_me").click(function () {
alert('Deleting!');
});
现在相应地,当我单击id为some-element-id
的元素时,插入一个新的div,我看到x
字符。但是点击x
不会做任何事情。没有错误。根据http://api.jquery.com/after,我可以这样插入元素,这是正常工作的。我可以使用Firebug看到DOM树中的新元素。现在为什么当我点击span
时没有事件被触发?由于一些未知的原因,我被迫使用jQuery 1.3.2,但这应该不是问题。
更新1 我知道我正在尝试将偶数绑定到DOM中不存在的元素。但是请注意,即使没有触发,事件也会在元素嵌入到DOM中时触发。我使用了下面的代码,即使它不工作
$("span.delete_me").live('click',function () {
alert('Deleting!');
});
控制台上没有错误。更新2 下面是实际呈现的代码http://jsfiddle.net/8sjcZ/
见http://jsfiddle.net/vKwm6/
使用live方法
$(".delete_me").live("click", function () {
alert('Deleting!');
});
当你在文章中调用。click方法时,"x"并不存在。
try
$(".delete_me").live('click',function () {
alert('Deleting!');
});
你的。click()不起作用,因为在你调用。click()时。delete_me类不在DOM中,所以绑定永远不会发生。.live()确保在运行时创建的元素发生绑定。
嗯,你需要用live()
$(".delete_me").live('click',function () {
alert('Deleting!');
});
live()将应用于动态添加的对象
http://api.jquery.com/live/相关文章:
- SlideDown()不会'不能在jQuery中使用After()
- setTimeOut AFTER jQuery表单提交
- jQuery after() uncatch SyntaxError: 意外令牌 ILLEGAL
- target string after second <br> jquery
- jQuery:如何选择所有具有:before或:after的伪元素
- jQuery undefined after $(function() {
- jQuery Datepicker,事件 AFTER select,而不是 “onSelect”
- jquery click position after css zoom / -webkit-transform
- 为什么 jQuery .after() 不链接新元素
- jQuery nextAll after certain element
- jquery before() after() 不能正常工作
- JQuery Beginner .after 不起作用
- jquery .after 不对非追加对象工作
- 使用 Jquery .after() 来移动元素
- jQuery after 函数似乎无法对表正常工作
- jQuery - after()-function触发两次
- jQuery .after()尝试"correct"我插入的html.我怎么才能阻止这一切
- jQuery.after()没有按预期工作
- 与jquery after()行为混淆
- JQuery after AJAX GET