2012-10-03 87 views
0
返回

考慮下面的Javascript的jQuery代碼來動態增加一個div:擴大的div通過AJAX

$('.expandingThumbnail').hover(function() { 
    $(this).animate({ 
     height: '32px', 
     width: '32px' 
    }, 500); 
},function() { 
    $(this).animate({ 
     height: '128px', 
     width: '128px' 
    }, 500); 
}); 

,可被任何理論DIV操作:

<div class="expandingThumbnail">Hi!</div> 

只要這個div返回爲部分頁面請求,它按預期展開。但是,如果這個div作爲AJAX請求的一部分返回並通過jQuery的.html()方法插入到另一個div中,那麼div不會按預期展開。這是爲什麼,我該如何解決它?

+0

你能提供代碼寫入來擴展動態填充的div嗎? –

+0

@AshishGupta真的沒什麼關係,它只是表示頁面加載時內容不存在(即當js運行時它不存在) – AD7six

回答

2

這是動態生成內容的典型問題;直接事件處理程序僅適用於調用時已存在的元素。您需要將您的處理程序綁定到靜態父元素,以處理由新元素觸發的事件。有關詳細信息,請參見.on。請注意,您可以()用下面的document替換爲最接近的靜態父元素.expandingThumbnail以提高性能。

$(document).on('mouseenter', '.expandingThumbnail', function() { 
    $(this).animate({ 
     height: '32px', 
     width: '32px' 
    }, 500); 
}).on('mouseleave', '.expandingThumbnail', function() { 
    $(this).animate({ 
     height: '128px', 
     width: '128px' 
    }, 500); 
}); 
+0

@ AD7six這就是它的道路:) – nbrooks

+0

謝謝,nbrooks。 'expandingThumbnail'實際上沒有一個直接的父對象,這些對象會出現在三個不同的可能父對象中(它們也是動態發送的:'document - > staticDiv1 - > staticDiv2 - > dynamicTable - > dynamicTableTr - > dynamicTableTd - > expandingThumbnail ')。該代碼目前不適用於我,但我現在正在使用'on'方法。感謝推動力! – dotancohen

+0

我似乎沒有用這種方法做這件事,即使是非AJAX內容。這裏是一個小提琴:http://jsfiddle.net/dotancohen/UwnCc/ – dotancohen