2013-04-01 56 views
2

我正在用js創建新的html元素。如何讓js知道新創建的html元素

$('#write_comment').on('click',function(){ 
    $(this).html('<textarea> </textarea><button onclick="test()">save</button>'); 
}); 

function test(){ 
alert('testme'); 
} 

但這些textareabutton後創建的,如果我在save點擊,沒有任何反應。

是否有任何jQuery的功能,我可以說。 (newly_created_element).find(js_function)

或者具有相同功能的東西會很好。

請大家幫忙。在許多方面

$('#write_comment').on('click',function(){ 
    var myButton = $('<button>save</button>').click(function() { 
    test(); 
    }); 
    $(this).html('<textarea></textarea>').append(myButton); 
}); 
+2

這應該工作,http://jsfiddle.net/QGGhW/ – Musa

+0

@Musa,謝謝。我不得不在$'(function(){})'' – doniyor

+0

@Musa之外放置js函數,爲什麼我不能在該textarea內部單擊並寫入任何內容?有趣的 – doniyor

回答

3
$('#write_comment').on('click',function(){ 
    $(this).html('<textarea> </textarea><button id="test">save</button>'); 
}); 

$('body').delegate('#test','click',function(){ 
alert('testme'); 
}); 

使用類

$('#write_comment').on('click',function(){ 
     $(this).html('<textarea> </textarea><button class="test">save</button>'); 
    }); 

    $('body').delegate('.test','click',function(){ 
    alert('testme'); 
    }); 
+0

可能是你會重複ID .. –

+0

你也可以給課程 – coolguy

3

創建按鈕seperately。並且將用於稍後添加的元素

$(document).on('click','#write_comment button.newlyAdded',function() 
{ 
    alert('testme'); 
}); 
+0

非常好的想法,didnot知道 – doniyor

+1

雖然我喜歡ubercooluk的解決方案。首先檢查他的外表。 –

2
$('#write_comment').on('click',function(){ 
    $(this).html('<textarea> </textarea><button class="NewlyAdded">save</button>'); 
}); 

$(document).on行爲就像.live()delegate()

+0

謝謝Dipesh。很乾淨 – doniyor