2014-03-07 46 views
0

我現在有一個腦屁,很可能是因爲深夜。任何人,在ajax調用之後,我都會在文檔中添加內容。我正在嘗試爲這些元素分配一個點擊事件,但這些元素並未被觸發。在靜態html中重新創建元素。prependto後點擊事件?

jQuery的

$('.row').click(function() { 
    $(this).children('.slide2').stop().slideToggle(200); 
}) 


$('<div class="row"><div class="main"><div class="split6">' 
         + data.some + '</div><div class="split6">' 
         + data.some + '</div><div class="split6">' 
         + data.some + '</div><div class="split6">' 
         + data.some + '</div><div class="split6">' 
         + data.some + '</div><div class="split6">' 
         + data.some + '</div></div><div class="slide2"><span>Info: ' 
         + data.some + '</span><span>Info: ' 
         + data.some + '</span><span>Info: ' 
         + data.some + '</span></div></div>').prependTo('#results').hide().slideDown(500); 

回答

1

使用

$('#results').on('click','.row', function() { 
    $(this).children('.slide2').stop().slideToggle(200); 
}) 

您需要使用Event Delegation用於動態創建elemnts。您必須使用委託事件方法使用.on()

$(document).on('event', 'selector', callback_function) 

委派的事件具有的優點是它們可以處理來自被添加到文檔在稍後的時間派生元素事件。通過選擇在委託事件處理程序附加時保證存在的元素,我們可以使用委託事件將click事件綁定到動態創建的元素,並避免頻繁附加和移除事件處理程序。

+0

謝謝!完全滑了我的腦海。 – Ray

+0

@射線,它發生在我們所有人身上。很高興我可以幫助:) – Satpal

0

您需要使用event delegation因爲你的.row已經加入動態位置:

$('body').on('click','.row', function() { 
    $(this).children('.slide2').stop().slideToggle(200); 
}) 

事件代表團將幫助您在點擊事件附加到這些新創建的.row元素。

0

你應該使用delegate

$(document).on("click",".row",function(){ 
    $(this).children('.slide2').stop().slideToggle(200); 
}); 

它可以幫助你附加的處理程序未來元素

+1

你的答案使用'on',你爲什麼鏈接到'委託'? – Barmar

+0

@Barmar對不起我的錯誤。我編輯了答案 –