0

そのため、ページの横に、ユーザーが次のスライド(ページ)に移動できるボタンがあります。

ページサイズはさまざまな幅になる可能性があるため、これは最初に計算されます

したがって、リンクが行うことはアニメーションを実行することです。遠くまでアニメートしているのにボタンをダブルクリックすると

これが私が持っているコードです

jQuery(".nextSlide").click(function() {

slide("forward", pageSize);
    //for now assume pageSize is 950

});

function slide(data, pageSize) {
 var newLeft = calcLeft(data, pageSize);
 jQuery('#pageHolder').animate({
    left: newLeft
 }, 400, function() {
    calcNav(pageSize);
    calcPage(pageSize);
 });

}

function calcLeft(action, pageSize){
    // there will only ever be 4 slides. 0 is pos1)
var currentPos = currentPosition();
if (action == "back") {
    if (currentPos == "0") {
        left = -pageSize * 3;
    } else {    
        left = currentPos + pageSize ;  
    }

} else if (action == "forward") {

    if (currentPos == -pageSize * 3) {

        left = 0;
    } else {
        left = currentPos - pageSize ;  
    }
return left;    
}

function currentPosition() {
    var currentPosition = parseInt(jQuery("#pageHolder").css("left"), 10);
    return currentPosition;
}

したがって、ユーザーがボタンをクリックすると

<a href="#" class="nextSlide">next</a>

これが2回、アニメーションを台無しにする可能性があります。

どちらかを確認する方法はありますか

a)ボタンが押されたとき、アニメーションが完了するまでボタンを再度押すことはできません

また

b)次のスライドにスライドしてから、分析を再度実行します。

ありがとう

4

2 に答える 2

1

クリックイベントを関数にバインドして、クリック処理を自分で制御できるようにします。その関数は次のように実行する必要があります。

function clickHandler(event) {

    // If event isn't already marked as handled, handle it
    if(event.handled !== true) {

        // Kill event handler, preventing any more clicks
        $(".nextslide").die("click");

        // Do your stuff here
        slide("forward", pageSize);

        // Mark event as handled
        event.handled = true;
    }
    // Else
    return false;
}

// Bind click to handler for the first time
$('.nextslide').live("click", clickHandler);

すでにクリックされている場合、これにより要素のイベントが強制終了されます。

次に、アニメーションの最後に、イベントを再バインドします。

// Rebind refresh click handler
$('.nextSlide').live("click", clickHandler);
于 2013-02-13T02:51:31.807 に答える
0

実例

jQuery(document).ready(function () {
 jQuery(".touchslider-prev").on("click", clickHandlerPrev);
});

function clickHandlerPrev(event) {

// If event isn't already marked as handled, handle it
if(event.handled !== true) {

    // Kill event handler, preventing any more clicks
    jQuery(".touchslider-prev").off("click");

    // Do your stuff here

    slide("back");

    // Mark event as handled
    event.handled = true;
} 


return false;
}

function slide(data) {

var newLeft = calcLeft(data, 950);

  jQuery('#pageHolder').animate({
    left: newLeft
  }, 400, function() {
    calcNav(950);
    calcPage(950);
    jQuery(".touchslider-prev").on("click", clickHandlerPrev);


  });

}

于 2013-02-14T01:05:12.660 に答える