我遇到了各種來自垃圾瀏覽器的問題,我似乎無法用我讀過的任何東西克服這些問題。這是情況...我使用第三方插件來生成一個畫廊。這個插件帶有一個圖片更改的回調,每次圖片更改時都會觸發。在回調中綁定/取消綁定
我想要做的是添加兩個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