我有一个jQuery的问题:当我在拇指图像上点击主页时会打开iframe,但是当我点击过滤器项目并在图像上打开帖子时。 这是我的网站测试:[obscured]
为什么当我点击过滤器然后在图像上打开帖子而不是iframe?
谢谢你,抱歉我的英文不好!
答案 0 :(得分:1)
当您过滤投资组合项目时,会动态重新生成这些项目,因此先前绑定的行为将丢失(在您的情况下,是单击事件)。
要解决jQuery有.live()事件,它不仅将事件处理程序附加到当前DOM元素,还附加到将来创建的元素(即,不是在加载DOM时创建,而是稍后创建)。
在你的.js代码中,你有这个电话:
portfolioItemsEnabled.click( function (e) {
if(!jQuery(this).hasClass('active') && jQuery(this).hasClass('visible')) {
portfolioItems.removeClass('active');
jQuery(this).addClass('active');
portfolioItems.not('.active').find('.overlay').css({ display: 'none' });
var postId = jQuery(this).attr('id').split('portfolio-')[1];
tz_getPortfolio(postId);
}
e.preventDefault();
});
为了让它随时工作,即使加载了新的/不同的投资组合项目,你也应该像这样更改电话
jQuery('#portfolio-items.enabled li').live("click", function(e) {
if(!jQuery(this).hasClass('active') && jQuery(this).hasClass('visible')) {
portfolioItems.removeClass('active');
jQuery(this).addClass('active');
portfolioItems.not('.active').find('.overlay').css({ display: 'none' });
var postId = jQuery(this).attr('id').split('portfolio-')[1];
tz_getPortfolio(postId);
}
e.preventDefault();
});