2013-04-11 3 views
0

Мне нужна помощь в отключении двух кнопок (вправо/влево) в слайд-шоу, когда они достигают своих границ - fiddle; изменение фонового цвета и типа курсора по умолчанию было бы достаточно. Это код JQuery:Отключить кнопки

var menuItem_place = 0; 
var menuItem_position = 0; 
var menuItem_limit = parseInt($('.menuItem').length) - 1; 

$('.menuItem:first .content').css({margin: 0, height: '100%', lineHeight: '99px'}) 

$('#rightBtn').on('click', function(){ 
    if (menuItem_place < menuItem_limit) { 
     menuItem_place++; 
    } 
    menu_animate(); 
}); 

$('#leftBtn').on('click', function(){ 
    if (menuItem_place > 0){ 
     menuItem_place--; 
    } 
    menu_animate(); 
}); 

var menuitems = $('.menuItem'); 
var contents = $('.content', menuitems); 

menuitems.click(function(){ 
    menuItem_place = $(this).index(); 
    menu_animate() 
}); 

function menu_animate() { 
    contents.animate({margin: 20, height: '64%', lineHeight: '63px'}, 300); 
    $(contents.get(menuItem_place)).stop().animate({margin: 0, height: '100%', lineHeight: '99px'}, 100) 
    menuItem_position = 0 - (menuItem_place * 200); 
    $('#menuContainer').stop().animate({left: menuItem_position + 'px'}, 300); 
} 

Код не мой, и это вне моей способности делать то, что мне нужно. Любая помощь будет оценена по достоинству. Thanx.

Педро

+0

Предположительно вы хотите кнопки 1 и левая кнопка отключается, когда ползунок до упора влево и кнопки 4 и правой кнопкой отключенным, когда ползунок до упора вправо? Если да, почему бы не сказать так? В любом случае, это немного грубо, просто публикуйте некоторые (неопределенные) спецификации и ожидайте, что люди сделают вашу работу за вас. – George

+0

Я не понимаю контекста вопроса. –

+0

Когда вы хотите отключить? –

ответ

1

Просто проверьте menuItem_place, чтобы узнать, равен ли он нулю (первый элемент) или равен $('.menuItem').length - 1 (последний элемент). Я создал класс (.disabled), который применяется или удаляется на основе этих условий.

jsFiddle example

var menuItem_place = 0; 
var menuItem_position = 0; 
var menuItem_limit = parseInt($('.menuItem').length) - 1; 
if (menuItem_place == 0) $('#leftBtn').addClass('disabled'); // <-- NEW 
$('.menuItem:first .content').css({ 
    margin: 0, 
    height: '100%', 
    lineHeight: '99px' 
}) 

$('#rightBtn').on('click', function() { 
    if (menuItem_place < menuItem_limit) { 
     menuItem_place++; 
    } 
    menu_animate(); 
}); 

$('#leftBtn').on('click', function() { 
    if (menuItem_place > 0) { 
     menuItem_place--; 
    } 
    menu_animate(); 
}); 

var menuitems = $('.menuItem'); 
var contents = $('.content', menuitems); 

menuitems.click(function() { 
    menuItem_place = $(this).index(); 
    menu_animate() 
}); 

function menu_animate() { 
    contents.animate({ 
     margin: 20, 
     height: '64%', 
     lineHeight: '63px' 
    }, 300); 
    $(contents.get(menuItem_place)).stop().animate({ 
     margin: 0, 
     height: '100%', 
     lineHeight: '99px' 
    }, 100) 
    menuItem_position = 0 - (menuItem_place * 200); 
    $('#menuContainer').stop().animate({ 
     left: menuItem_position + 'px' 
    }, 300); 
    $('#rightBtn,#leftBtn').removeClass('disabled'); // <-- NEW 
    if ($('.menuItem').length - 1 == menuItem_place) $('#rightBtn').addClass('disabled'); // <-- NEW 
    if (menuItem_place == 0) $('#leftBtn').addClass('disabled'); // <-- NEW 
} 
+0

Он отлично работает , Однако в проекте, над которым я работаю, я не могу использовать класс css/disabled, потому что я делаю все с анимированными кнопками (mouseenter/mouseleave/click) через jQuery, и адаптация возвращает неожиданные результаты. Я в основном заменил ваш addClass() для моего кода, но это не хорошо. Вот обновленная [скрипка] (http://jsfiddle.net/7pQ3r/) Если вы прокомментируете все/* NEW * /, вы увидите кнопки в порядке. Извините за беспорядок. : S – Pedro

0

Я не уверен, что вы подразумеваете под 2 кнопкой ограниченной, но я могу только предположить, что вы имеете в виду левые и правые кнопки.

Я обновил ваш код jsfiddle, см. Ниже.

http://jsfiddle.net/xkUYm/1/

Все, что я сделал, чтобы сказать им, чтобы display:none в CSS

ИЛИ

вы можете удалить их из HTML все вместе.

+0

Благодарим вас за быстрый ответ. Раньше я был немного расплывчатым. То, что я имел в виду, было для кнопок «Влево/Вправо», чтобы отключить себя после того, как слайд-шоу достигнет своих левых/правых концов. – Pedro

+0

О, хорошо, это делает вещи немного яснее. Возможно, вам захочется обновить исходное сообщение. Я также думаю, что на ваш вопрос ответил @ j08691, который предоставил эту ссылку [http://jsfiddle.net/j08691/xkUYm/2/](http://jsfiddle.net/j08691/xkUYm/2/) – Andrew

Смежные вопросы