我的问题是有时我的脚本不起作用。我知道问题,但我无法解决。下面,我的脚本。
$(document).ready(function(){
/* Cria UL e popula de LI de acordo com o HTML do controle da Vtex*/
$('.slider-nav').after('<ul class="slider-ul"></ul>');
/* clona elementos se tiver menos que 3 */
var tamArray = $('#slider .box-banner').length;
if (tamArray < 3) {
for (ij=1; ij<=(3-tamArray); ij++){
$('#slider .box-banner:last').clone().appendTo('#slider');
}
}
$('#slider .box-banner').each(function(){
href = $(this).find('a').attr('href');
title = $(this).find('a').attr('title');
src = $(this).find('img').attr('src');
$('ul.slider-ul').append('<li><a href="'+href+'" title="'+title+'"><img src="'+src+'"/></a></li>');
});
$('.slider-ul').wrap('<div class="slider-ul-wrapper" />');
/* Calcula offset do left pra colocar um banner no meio */
var tamJanela = $(window).width();
var tamImagem = $('#slider .slider-ul:first img').width();
var leftOffset = tamImagem - (tamJanela-tamImagem)/2;
$('.slider-ul').css('left',-leftOffset);
/* Clique em #nav-dir */
$('#nav-dir').click(function(){
$('.slider-ul li:last').clone().addClass('clone').insertBefore('.slider-ul li:first');
var soma = -(leftOffset)-tamImagem;
$('.slider-ul').css('left',soma);
$('.slider-ul').animate({
left: '+='+tamImagem+''
//left: "'+="+tamImagem+"'"
}, 1000, 'swing', function(){
$('.slider-ul .clone').remove();
$('.slider-ul li:last').insertBefore('.slider-ul li:first');
$('.slider-ul').removeAttr('style');
$('.slider-ul').css('left',-leftOffset);
});
});
/* Clique em #nav-esq */
$('#nav-esq').click(function(){
$('.slider-ul li:first').clone().addClass('clone').insertAfter('.slider-ul li:last');
//var soma = -tamImagem;
//$('.slider-ul').css('left',soma);
$('.slider-ul').animate({
left: '-='+tamImagem+''
//left: "'+="+tamImagem+"'"
}, 1000, 'swing', function(){
$('.slider-ul .clone').remove();
$('.slider-ul li:first').insertAfter('.slider-ul li:last');
$('.slider-ul').removeAttr('style');
$('.slider-ul').css('left',-leftOffset);
});
});
});
以及相关的 HTML:
<div class="slider-ul-wrapper">
<ul class="slider-ul" style="left: 671.5px">
<li>
<a href="undefined" title>
<img src="...." />
</a>
</li>
.
.
.
</ul>
</div>
tamImagem
将元素宽度计算为 0时会出现问题img
。然后它将错误的值传递给leftOffset
value 并破坏表达式。有时,经过几次刷新后,它就可以工作了。有时它不会。问题是什么?它返回 0 是否是因为元素尚未准备好?但是为什么不准备好呢?
此外,我不太了解后台运行的某种 Ajax 请求。请求完成后,页面上的每个图像都会收到一个complete
类。我应该等到img
元素是complete
吗?我怎么做?
非常感谢!