0

前/次の機能が新しいセクションの選択で機能しない。ページが読み込まれると、いくつかのスライドショーが読み込まれ、ユーザーは前へ/次へボタンを使用してそれらをナビゲートします。1つのセクションの最後に到達すると、表示する次のセクションを選択します。私の問題は、ユーザーが新しいセクションに移動した後、prev/next関数が機能しないことです。

これがJSFiddleです。したがって、これらを見逃さないでください。前/次のボタンは、それぞれページの左側と右側にぶら下がっている前/次のスライドの端です。以下は、問題を引き起こしていると私が信じているJavaScriptのセクションです。

ありがとう

var secName,
    slideCount,
    centSlide;

liveSec(0);

// Initiate live section
function liveSec(x) {
    centSlide = 0;
    secName = $('#slider > div:eq('+x+')').attr('id');
    slideCount = $('#'+secName+'').children().length;
    $('#'+secName+'').children().first().addClass('liveslide').next().addClass('next');
}

// call prev/next functions
$('#'+secName+' > div').click(function() {
    var index = $('#'+secName+' > div').index(this);
    if (index > centSlide) nextcycle(centSlide, slideCount);
    if (index < centSlide) prevcycle(centSlide, slideCount);
    return false;        
});

// cycle sections   
$('#'+secName+' .select').click(function () {
    if (!e) var e = window.event;
    e.cancelBubble = true;
    if (e.stopPropagation) e.stopPropagation();
    $('.liveslide').removeClass('liveslide');
    $('.prev').removeClass('prev');
    i = $('#'+secName+' .select').index(this);
    liveSec(i);
});
4

1 に答える 1

0

他のセクションのスライドに機能を割り当てていません。最初のセクションのスライドのみにonclick関数が定義されています。最初にそれらすべてをループするようにしてください

for (var i=0; i < noOfSections; i++)
{
    var secName = sections[i];

   // call prev/next functions
  $('#'+secName+' > div').click(function() {
      var index = $('#'+secName+' > div').index(this);
      if (index > centSlide) nextcycle(centSlide, slideCount);
      if (index < centSlide) prevcycle(centSlide, slideCount);
      return false;        
  });

  // cycle sections   
  $('#'+secName+' .select').click(function () {
      if (!e) var e = window.event;
      e.cancelBubble = true;
      if (e.stopPropagation) e.stopPropagation();
      $('.liveslide').removeClass('liveslide');
      $('.prev').removeClass('prev');
      i = $('#'+secName+' .select').index(this);
      liveSec(i);
  });

}

実際にフィドルでうまくいったのは、liveSec関数の閉じ括弧を2番目のクリック関数の下に移動したときでしたが、セクションがどのように機能するかわからないため、バインドを解除しない限り、クリック関数が複数回割り当てられる可能性があります最初。

// Initiate live section
function liveSec(x) 
{
centSlide = 0;
secName = $('#slider > div:eq('+x+')').attr('id');
slideCount = $('#'+secName+'').children().length;         
    $('#'+secName+'').children().first().addClass('liveslide').next().addClass('next');


   // call prev/next functions
$('#'+secName+' > div').click(function() {
    var index = $('#'+secName+' > div').index(this);
    if (index > centSlide) nextcycle(centSlide, slideCount);
    if (index < centSlide) prevcycle(centSlide, slideCount);
    return false;        
    });

    // cycle sections   
$('#'+secName+' .select').click(function () 
    {
    if (!e) var e = window.event;
         e.cancelBubble = true;
         if (e.stopPropagation) e.stopPropagation();
    $('.liveslide').removeClass('liveslide');
    $('.prev').removeClass('prev');
    i = $('#'+secName+' .select').index(this);
    liveSec(i);
});
}
于 2013-02-08T20:05:24.117 に答える