打开iframe而不是后

问题描述:

我有一个jQuery的问题:当我点击主页在一个拇指图像打开iframe,但当我点击一个过滤器项目和图像拇指打开帖子。 这是我的网站测试:[obscured]打开iframe而不是后

为什么当我点击一个过滤器,然后在图像的拇指打开后,而不是iframe?

谢谢你,对不起我的英文不好!

+1

我不认为当你过滤投资组合项目时,绑定行为会丢失。你的JS中有一行用'/ *评论了一个投资组合项目被点击* /'。有没有你告诉投资组合项目打开你说的“iframe”?如果是这样,我只是在这里猜测,试着改变这个调用'portfolioItemsEnabled.click(function(e){'到这样的:'$('#portfolio-items.enabled li')。live(“click” ,函数(e){' – scumah

+0

@scumah我试过了,但它不起作用!然后用它挂起流沙,Firebug给我这个错误:'未捕获的TypeError:属性'''对象[对象DOMWindow]不是函数'。非常感谢你! – humanbeing

+0

@scumah出现了一个小错误,我用'jQuery'取代了'$',现在它可以正常工作,非常感谢!scooh! – humanbeing

当您过滤组合项目时,这些项目会动态重新生成,因此以前绑定的行为会丢失(在您的情况下为点击事件)。

为了解决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(); 
});