如果你里面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) –