2013-08-07 50 views
1

在我的項目,我追加幾個按鈕,一個div:jQuery的。對(「點擊」) - 替代.live()

$(".tab-content").append("<div class='landing_content'><button class='off-screen-nav-button btn btn-info btn_edit' data-effeckt='effeckt-off-screen-nav-right-overlay'>Edit</button></div>"); 

,然後監聽用下面的代碼點擊:

$(".tab-content").on("click",".btn-edit",function(){ 
    console.log('edit'); 
}); 

爲什麼這不起作用?我習慣使用.live(),但它已被棄用。

謝謝。

+0

當你是綁定處理程序時,「.tab-content」元素必須位於DOM中。並修復你的選擇器或類名稱 –

+0

'btn_edit'和'landing_content'對於class/id名稱是無效的,因爲下劃線不是有效/支持的(除了在某些I.E.版本中奇怪的) –

回答

7

在你的標記中你有btn_edit,在你的jQuery中你有btn-edit

更改您的標記class到jQuery選擇匹配,就像這樣:

$(".tab-content").append("<div class='landing_content'><button class='off-screen-nav-button btn btn-info btn-edit' data-effeckt='effeckt-off-screen-nav-right-overlay'>Edit</button></div>"); 
+1

Hahaha:D對不起。總是很高興得到一個新的眼睛。有時你可能會迷失在所有的代碼中。 –

+0

@CasperSlynge - 不用擔心,有時你越盯着你自己的代碼越是看起來正確,而且更難以確定它爲什麼會被破壞。這是StackOverflow的用途。 :-) –

3

的原因,你的方法沒有工作(除了什麼指出約btn-edit),可能是因爲你試圖綁定到實際上並沒有在DOM存在,直到它被追加後的元素的事件,曾經有LIVE已經貶值了,但你可以做到這一點,而不是:

//bind the event to the document which always exists and specify the selector 
//as the second argument 
$(document).on("click",".tab-content .btn-edit",function(){ 
    console.log('edit'); 
}); 

希望這有助於見文獻展jQueries如需更多幫助,請撥打here

+0

@CasperSlynge你對此有何遺憾? :S –

+0

這是爲了上面的答案。 –