如果你裏面header.html
定義.class
元素,那麼你需要使用event delegation如下:
$(document).on('click','.class',function() {
$('#id').slideToggle('fast');
});
事件委託應在其上添加控件使用DOM
在稍後的部分或在DOM
被加載後。
UPDATE
當您直接連接事件元素象下面這樣:
$('.element').click(function(){
....
});
或如下:
$('.element').on('click',function(){
....
});
這些事件不會得到重視到d在加載之後增加的元素或元素。所以,你需要重視event
要麼document
靶向DOM特別element
如下:
$(document).on('click','.element',function(){
...
});
,或者這是頁面加載過程中加載其父。對於防爆:
假設你有如下結構:
<div class="somediv">
<!--Many other children elements here-->
</div>
現在,你要麼通過append
或load
或任何其他可能的方式和結構添加一個事件將成爲如下:
<div class="somediv">
<!--Many other children elements here-->
<button class="element">Click here<button> <!--This is dynamically added element -->
</div>
現在您可以將事件附加到.somediv
而不是附加到document
,因爲它在DOM
加載期間添加並且新添加的元素將在此內。
這實際上將提高代碼的性能,你是明確 告訴從哪裏開始jquery
搜索的動態 添加.element
和jquery
可以搜索它來得更快,而不是 從document
遍歷
所以你可以把它寫成如下:
$('.somediv').on('click','.element',function(){
//^^^^parent div ^^^dynamically added element
//do anything here
});
我的印象中,你將不得不使用'委託events'這裏... –
對不起,我不明白。 – riotgear
看看[這個線程](http://stackoverflow.com/questions/8110934/direct-vs-delegated-jquery-on) –