2011-07-22 114 views
0

繼後是一段jQuery代碼被我逼瘋使用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/

+1

的問題是,在'。當您想要將事件綁定到DOM時,delete_me'元素不存在於DOM中。使用'live()'從jquery – rabudde

+0

一個簡單的解決方案也可以把'$(「。delete_me」)。click()'as'$('#new-div-id - '+ count +'.delete_me') .click()'裏面'$('#some-element-id')。click()'函數 – rabudde

+0

@rabudde,'live()',不起作用,請看更新 – Kumar

回答

1
+0

如果我說它不適合我,你不會相信我。這裏是實際的渲染代碼http://jsfiddle.net/8sjcZ/以及你的代碼,你的工作,但我的代碼不。注意我正在使用jquery1.3.2 – Kumar

+0

你有錯誤,試試修改http://jsfiddle.net/YF7hg/ – rabudde

+0

錯誤?哎呀!錯誤是什麼? – Kumar

0

使用live方法:

$(".delete_me").live("click", function() { 
    alert('Deleting!'); 
}); 

在調用。點擊方法在您的文章時,「X」並不存在。

0

嘗試

$(".delete_me").live('click',function() { 
    alert('Deleting!'); 
}); 

你。點擊()不工作,因爲.delete_me類不在DOM在一次調用。點擊()這樣的結合從來沒有發生。 .live()確保綁定發生在運行時創建的元素。

0

嗯,你需要live()

$(".delete_me").live('click',function() { 
    alert('Deleting!'); 
}); 

活(做)將適用於動態添加對象

http://api.jquery.com/live/