我遇到了各种来自垃圾浏览器的问题,我似乎无法用我读过的任何东西克服这些问题。这是情况...我使用第三方插件来生成一个画廊。这个插件带有一个图片更改的回调,每次图片更改时都会触发。在回调中绑定/取消绑定
我想要做的是添加两个div的CSS ...一个是一个包装div,当孩子被点击时滑出,当孩子再次点击时滑回。
这里的回调:
changepicturecallback: function(){
$('.sxpp_commentsImage').unbind(toggle);
oldWidth = $('.pp_pic_holder').width() - 20,
newWidth = $('.pp_pic_holder').width() + (200),
newHeight = $('.pp_hoverContainer').height(),
cImageAlign = newWidth - 20;
var toggle = function() {
if(newWidth == $('.sxpp_comments').width()){
$('.sxpp_comments').animate({width: oldWidth});
}else{
$('.sxpp_comments').animate({width: newWidth});
}
}
$('.sxpp_comments').width(oldWidth).css('background-color','red');
$('.sxpp_commentsImage').css({'float':'right','background-color':'green','width':'20px','height':newHeight});
$('.sxpp_commentsImage').bind('click',toggle);
}
这工作完全正常的FF4 & Chrome浏览器...但是,它犹如“绑定”是不是在Internet Explorer中发生的事情。我一直在阅读“.live”&“.delegate”方法,但(A)我不熟悉它们的工作方式(B)如果可以清除变化的“.live”,然后添加它回到我正在做的绑定。
任何洞察力或我可能忽略的东西?
编辑*** ...当单击链接时,动态创建div(显示灯箱)。所以,我读的所有东西......绑定事件无论如何都是错误的路线。
我同意它应该是活的()......然而,当图像被改变...这将导致live()堆叠在一起。有没有办法在添加下一个之前清除前一个live()? – Stuck 2011-05-20 17:44:50
为什么会堆叠?你不可能有一个全球性的功能来照顾所有这些元素吗? – Blender 2011-05-20 17:46:01
嗯......我没有想过将“var toggle =”从回调中移出来并使其成为全球...我的灵魂正在闪耀。所以我将它移出回调并添加了“$('。sxpp_commentsImage')。live('click',toggle);”然而,在IE中仍然具有相同的效果。 – Stuck 2011-05-20 17:55:51