2012-07-03 43 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