2014-09-29 54 views
3

如果第一個或最後一個選項卡顯示爲用戶,我希望將類.disabled添加到左側和/或右側控件(.tab-left,.tab-right)可以看到他們已經到達最後,不能再點擊任何東西。在每次點擊和添加類別期間檢查位置

現在我這樣做,以防止用戶過去的結束。

if (tabs are at the end) { 
    return; 
} 

這適用於用戶無法點擊過去的結束,但如果我返回之前添加類,問題是.disabled類不會被添加,直到標籤已經到達終點和用戶再次點擊。

if (tabs are at the end) { 
    $('.tab-right').addClass('disabled'); 
    return; 
} 

我需要在顯示最後一個選項卡時添加禁用的類,而不是在用戶嘗試單擊末尾時添加。

下面是JS的小提琴鏈接:http://jsfiddle.net/uue6pgcx/

+1

所以基本上你想要的JavaScript返回前要添加的類,因此用戶並不需要點擊第二次? – GSaunders 2014-09-29 17:10:33

+0

是的,這正是我想要的。 – user3123174 2014-09-29 17:11:11

回答

3

一種選擇,你可以嘗試是啓用/禁用的左,右按鍵一旦動畫完成。

$ul.filter(':not(:animated)').animate({ 
    "left": dir + liWidth 
    }, { 
    complete: function() { 
    // Calculate the number of items in the container (without left and right navigation buttons). 
    var lisContainer = Math.round(($container.width() - $left.outerWidth() - $right.outerWidth())/liWidth); 
    // Disable right button when list is moved to the left a number of items 
    // such as the remaining number of them is less or equal than the number 
    // of items that fit in the container. 
    $right.toggleClass('disabled', $li.length + $ul.position().left/liWidth <= lisContainer); 
    // Disable left button when list is in the origin. 
    $left.toggleClass('disabled', $ul.position().left === 0); 
    } 
}); 

聲明:根據jQuery outerWidth additional notes,通過尺寸相關的API,包括.outerWidth(返回數量),可以是在某些情況下是分數。代碼不應該認爲它是一個整數。。所以讓我們希望Math.round就足以得到正確的數字。 也許有更好的方法來計算是否必須禁用/啓用右按鈕,而不是依賴容器中的項目數量。

這是你的代碼與上面的修改: http://jsfiddle.net/0Lsepxeu/

+0

這正是我所期待的。謝謝! – user3123174 2014-09-29 22:52:33