私の問題は、スクリプトが機能しないことがあるということです。私は問題を知っていますが、それを解決することはできません。以下、私のスクリプト。
$(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>
が要素の幅を 0 にtamImagem
評価すると、問題が発生します。次に、間違った値をvalue に渡し、式を台無しにします。場合によっては、数回更新した後、機能することがあります。そうでない場合もあります。何が問題ですか?要素の準備ができていないため、0 を返しますか? しかし、なぜ準備ができていないのでしょうか?img
leftOffset
また、バックグラウンドで実行されているある種の Ajax リクエストがありますが、これはよくわかりません。complete
リクエストが完了すると、ページ上のすべての画像がクラスを受け取ります。img
要素がになるまで待つ必要がありcomplete
ますか? それ、どうやったら出来るの?
どうもありがとう!