2012-07-03 44 views
5

我正在使用AJAXify在我正在實現頁面轉換的網站上使用jQuery時遇到了一些奇怪的行爲。jQuery:fadeout()不通過AJAX加載絕對定位元素

我的代碼:

HTML

<div id="backgrounds"> 
<img src="/assets/Uploads/hpbg3.jpg" alt="" class="bodybackground"> 
<img src="/assets/Uploads/hpbg2.jpg" alt="" class="bodybackground"> 
<img src="/assets/Uploads/hpbg4.jpg" alt="" class="bodybackground"> 
<img src="/assets/Uploads/hpbg5.jpg" alt="" class="bodybackground"> 
</div> 

(我通過使用jQuery的背景衰落)的jQuery

$('.otherClass').each(function() { 
     $('#backgrounds').fadeOut(function(){ 
       alert('fade'); 
      }); 
}); 

$('#main .container.homepageClass').each(function() { 
     $('#backgrounds').fadeIn(); 
}); 

CSS

#backgrounds {display: none; position: absolute; left: 50%; margin-left: -714px;} 

我的div淡出正確什麼時候我通過URL加載頁面,而不是通過AJAX鏈接鏈接到該頁面(並且我得到了警報),但是,當我通過AJAX化導航鏈接到該頁面時,淡化不會發生,但我仍然會收到警報函數fadeOut()肯定是觸發的。

當我從CSS中刪除絕對定位並通過AJAX鏈接到頁面時,我的div淡出,因爲我需要它(並且我得到警報)。它似乎只是導致問題與div的絕對定位。

當通過AJAX鏈接到受影響的頁面或使用硬加載時,fadeIn()可與絕對定位一起正常工作。這只是fadeOut導致的問題。

有什麼建議嗎?

回答

4

我設法解決這個問題,只需在div上加一個寬度即可。奇怪

+0

它也幫助我。但是,元素隱藏不會有任何褪色。 –

0

嘗試添加持續時間到您的淡出功能,這個功能非常大,即5-10秒。如果你還沒有看到淡出,那麼你可以更多地關注CSS。否則,在使用Ajaxify時,您知道某些東西在拖延,並且您的淡出在渲染髮生之前被觸發並完成。

對不起,還不能評論問題 - 我知道這不是一個答案。

0

如果您使用的是AJAXify gist by Balupton(它似乎就是您提到的),那麼我會說我遇到了通過該要求加載Javascript代碼的問題。你能否使用腳本驗證你是否加載了任何Javascript?嘗試在每個AJAX化頁面上添加一個Javascript,該頁面只能執行alert("hello");以外的任何操作。如果你沒有看到代碼,那麼我敢打賭你的Javascript甚至沒有被解僱。如果是這樣的話,請嘗試下面的代碼,它對我有用:

$scripts.each(function(){ 
    var $script = $(this), scriptText = $script.text(); 
    scriptText = "<script>" + scriptText + "</script>"; 
    contentHtml += scriptText; 
}); 
+0

嗨,這是我正在使用,是的。由於警報每次都會觸發,所以fadeOut肯定會被擊中。它也適用於位置:絕對從CSS中刪除 – Fraser