我正在尝试使用fadeIn效果将图像加载到div中。问题是我不知道如何避免同时加载和褪色。我想要加载图像,在完全加载后,它应该被淡入。
http://www.izrada-weba.com/vedranmarketic
这些是图像拇指:
<div id="thumbs">
<a href="#" class="slika_thumb" id="1"><img src="slike/th.jpg" border="0"/></a><a href="#" class="slika_thumb" id="2"><img src="slike/th.jpg" border="0"/></a><a href="#" class="slika_thumb" id="3"><img src="slike/th.jpg" border="0"/></a><a href="#"><img src="slike/th.jpg" border="0"/></a><a href="#"><img src="slike/th.jpg" border="0"/></a><a href="#"><img src="slike/th.jpg" border="0"/></a> </div>
</div>
这是应该加载图像的容器:
<div id="desna_kolona">
<div id="slika"><img src="slike/c6.jpg" /></div>
</div>
这是jquery文件:
$(document).ready(function(){
$('.slika_thumb').click(function() {
var id = $(this).attr("id");
$('#slika').hide();
$.ajax({
url: 'slike/slika.php?id=' + id,
success: function(data) {
$('#slika').html(data);
$('#slika').fadeIn();
}
});
});
});
我尝试使用complete
下面的success
但结果仍然相同。
有什么建议吗?
答案 0 :(得分:5)
也许尝试将onload处理程序绑定到通过ajax加载的数据中的任何图像。
$(document).ready(function(){
$('.slika_thumb').click(function() {
var id = $(this).attr("id");
$('#slika').hide();
$.ajax({
url: 'slike/slika.php?id=' + id,
success: function(data) {
$('#slika').html(data);
$('#slika img').bind("load", function() {
$('#slika').fadeIn();
});
}
});
});
});
答案 1 :(得分:1)
您可以根据需要隐藏图片。我要做的是向图像添加一个加载事件处理程序,然后运行你的AJAX来设置HTML。在你的加载事件处理程序中,淡入图像。如果你只是替换现有图像的源代码就会更容易,因为那时你可以为它添加加载处理程序 - 它不适用于div。
$(document).ready(function(){
$('#slika').find('img').load( function() {
$(this).fadeIn();
});
$('.slika_thumb').click(function() {
var id = $(this).attr("id");
$('#slika').hide().find('img').hide();
$.ajax({
url: 'slike/slika.php?id=' + id,
success: function(data) {
var src = $(data).find('img').attr('src');
$('#slika').show().find('img').attr('src',src);
}
});
});
});
答案 2 :(得分:0)
使用Image Object加载图片。它会在下载图像时触发load
事件。因此,当您将图片100%下载并使用#slika
时,请将图片放入jQuery.fadeIn()
。
答案 3 :(得分:0)
您需要在.html事件上使用回调函数。
$.ajax({
url: 'slike/slika.php?id=' + id,
success: function(data) {
$('#slika').html(data, function() {
$('#slika').fadeIn();
});
});
});
编辑:由于.html是同步操作,这实际上可能无效。你的意思是load()而不是吗?
答案 4 :(得分:0)
您必须为该图像发出AJAX请求,等待通过侦听成功事件完全加载它。这将帮助您将图像放入浏览器缓存中。然后你就可以按照自己的方式去做。此后图像将立即加载。