我从垃圾浏览器中遇到各种各样的问题,我似乎无法用我读过的任何东西来克服这些问题。这是情况......我正在使用第三方插件来生成图库。此插件附带一个图片更改回调,每次更改图像时都会触发。
我要做的是为两个div添加css ...一个是包装div,当点击子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(显示灯箱)。所以我正在阅读...无论如何,绑定事件是错误的路线。
答案 0 :(得分:3)
如果你想取消绑定事件功能,它的回调只需使用:
$('body').bind('click', function(evt){
console.log('I will be written only once');
$(this).unbind(evt);
})
答案 1 :(得分:1)
bind()
用于页面加载时的元素。适合静电。 live()
是动态生成元素的唯一解决方案。只有动态的选择。您应取消绑定click
或toggle
等事件,而不是实际的函数名称,这可能是您的问题。
答案 2 :(得分:1)
试
$('.sxpp_commentsImage').unbind("click", toggle);
而不是
$('.sxpp_commentsImage').unbind(toggle);
编辑:
或使用:
$('.sxpp_commentsImage').bind('click.myEvent', toggle);
然后
$('.sxpp_commentsImage').unbind('click.myEvent');
当您进行解绑时,不会声明切换。