另一種選擇,更容易理解,那麼強大,也非常有效,就是當你創建元素的情況下簡單綁定:
approveRef.on('child_added', function(snapshot) {
var posts = snapshot.val();
var $button = $('<button style ="button" id="approve">Approve</button>');
$button.on("click", function(){
var text = $('#post').val();
postsRef.push({'text':text});
$('#post').remove();
});
$('<div id="post">').text(posts.text).append($button).appendTo($('#feed'));
});
另外一個問題你要碰上,假設有將不止一個在頁面上,這是你在記錄中使用ID。如果它們不是唯一的,它們會發生衝突。
一個很好的選擇是使用data- *標籤或其他標識特徵(如css標籤)來引用這些項目。但就你而言,你根本不需要它們!
approveRef.on('child_added', function(snapshot) {
var posts = snapshot.val();
var id = snapshot.name();
var $button = $('<button style="button">Approve</button>');
$button.on("click", function(){
// use parent.closest(...) in place of an ID here!
var text = $(this).parent().closest('textarea').val();
postsRef.push({'text':text});
$(this).parent().remove();
});
/* just an example of how to use a data-* tag; I could now refer to this element using:
$('#feed').find('[data-record="'+id+'"]') if I needed to find it */
$('<div data-record="'+id+'">').text(posts.text).append($button).appendTo($('#feed'));
});
要展開,第一個參數對()是事件,第二個是一個「選擇器」,其如果存在的話,代表的事件到該元素的子元素,即使它們是在未來添加 – Kato
Ito pala yun。:) –