私は、ハッシュタグの変更に応答して次または前のスライドに移動するスライダーを持っています。 私は自分のコントロールにバインドしたクリックイベントをトリガすることでこれを行います。 ハッシュタグを変更すると、IE 9とFirefoxですべて正常に動作します。Safari/Chrome/Operaで予期しない動作が発生するjQueryの.trigger()呼び出し
しかし、Safari、Chrome、Operaでは、スクリプトによって正しい制御がトリガーされたときに問題がポップアップします。左のコントロールがトリガされた場合、正常に動作します。どちらが私の問題を混乱させる原因になっています。
スライド全体が、1つではなく2つ、または2つではなく3つずつ移動するように見えるという問題があります。基本的には、そのたびに余分なスペースを移動したかのように。 混乱するのは、#slideInnerをチェックすると、残っている余白が適切な量だけ移動したように見えますが、余分なスペースが移動したように見えます。
以下は、私が使用したコードの例です。スライダー要素
#slideshow #slidesContainer
{
margin:0 auto;
width:936px;
overflow: hidden;
position:block;
background-color: transparent;
}
#slideshow
{
width: 100%;
}
#slideInner
{
position: relative;
}
ため
HTML
<!DOCTYPE html>
<html lang="en">
<head></head>
<body>
<div id="rightarrow" class="control"> </div>
<div id="wrap">
<div id="slideshow">
<div id="slidesContainer">
<div id="slideInner>
<div id="homes" class="slide"> stuff in here </div>
<div id="blogs" class="slide"> stuff in here </div>
<div id="portfolio" class="slide"> stuff in here </div>
</div>
</div>
</div>
</div>
<div id="leftarrow" class=" control"> </div>
</body>
</html>
CSS JS
$(document).ready(function(){
var = slideWidth = '936';
var = currentPosition = 0;
var slides = $('.slide');
var numberOfSlides = slides.length;
$('#slideInner').css('width', slideWidth * numberOfSlides);
$('.control').bind('click', function(){
// Determine new position
currentPosition = ($(this).attr('id')=='rightarrow')
? currentPosition+1 : currentPosition-1;
function
$('#slideInner').animate({'marginLeft' : slideWidth*(-currentPosition)}, 1500);
});
$(window).load(function() {
hashchange();
});
function hashchange()
{
$(window).hashchange(function(){
// If hashchange happens whilst in state One
if (currentPosition == 0 && location.hash == '#blogs')
{
// click right once to slide two
$('#rightarrow').trigger('click');
}
else
if (currentPosition == 0 && location.hash == '#portfolio')
{
// click right twice to page three
$('#rightarrow').trigger('click');
$('#rightarrow').trigger('click');
}
// iif hashchange happens whilst in state two
else
if (currentPosition == 1 && location.hash == '#portfolio')
{
//click right once to page three
$('#rightarrow').trigger('click');
}
else
if (currentPosition == 1 && location.hash == '#homes')
{
// click left once to page one
$('#leftarrow').trigger('click');
}
//..... and so on with more slides
});
'var = slideWidth = '936';' – ckozl
JavaScriptは7つのエラーと8つ以上の警告がありますが、 '{..}'は正しく一致しません。そこに 'fucntion'がありますそれは意味をなさない... – ckozl
ええと、プラス - その時点で、そのコードはまったく動作しませんでした。 – utopastac