2012-05-09 3 views
2

Это работает потрясающе, когда мне нужно, чтобы оно скользило вниз и вверх, но из-за моего css есть двойная граница, когда он вверх. Поэтому я попытался вытащить верхнюю границу в главном css и добавить его после слайда, но если кто-то снова переключится на него. Как бы я сделал это так, чтобы на первой позиции (когда она была вверх) нет верхней границы границы, а когда ее вторая позиция (когда она вниз), есть верхняя граница. Вот мой кодСлайд Переключить два разных состояния css

$('.product').click(function() { 
    $('.info').slideToggle('slow', function() { 
    $('.product').css("border-top","1px solid #000"); 
    }); 
}); 
+2

Я не играл с JQuery в течение длительного времени, но я думаю, что 'slideToggle();' имеет только полный обратный вызов анимации. Таким образом, вам, вероятно, нужно будет использовать 'slideUp();' и 'slideDown();' для вашего случая. – arma

ответ

3

Demo jsBin

$('.product').toggle(function() { 
    $('.info').stop(1).slideDown('slow'); 
    $(this).css("border-top","1px solid #000"); 
}, function(){ 
    $('.info').stop(1).slideUp('slow'); 
    $(this).css("border-top","1px solid transparent"); 
}); 

Я использовал .stop(1), чтобы очистить некоторые очереди анимации.

+0

Почему slideToggle дважды? Вы должны скользить вверх/вниз в этом случае, я думаю, – Malyo

+0

@Malyo Почему бы и нет? Вам нравится демо? Вы можете использовать slideToggle и slideUp/down, как вы это делаете –

+0

Так как это кажется бессмысленным, поскольку нам не нужно выполнять двойное действие, если вы знаете, что я имею в виду, достаточно двух триггеров для отдельных действий. Мне нравится отредактированная версия! – Malyo

0

Вы можете использовать jquery toggleClass путем создания 2 CSS классов с соответствующими границами. и переключая их как и в случае необходимости

Пример

$('.product').click(function() { 
    $('.info').slideToggle('slow', function() { 
    $('.product').toggleClass('addBorder'); 
    }); 
});​ 

Вы можете проверить live example on jsfiddle

0

Ну это интересно играть с JQuery :)

Вот мой небольшой эксперимент:

$('.product').click(function() { 
    if($('.toggled').length > 0){ 
     $('.info').slideToggle('slow', function() { 
     $('.product').css("border-top","none").removeClass('toggled'); 
     }); 
    }else{ 
     $('.info').slideToggle('slow', function() { 
     $('.product').css("border-top","1px solid #000").addClass('toggled'); 
     }); 
    } 
});​ 

http://jsfiddle.net/kaunt/

0
$('.product').click(function() { 
    $('.info').slideToggle('slow', function() { 
     $('.product').css("border-top","1px solid #000"); 
     if(!$('.info').is(':visible')) $('.product').css("border-top","1px solid transparent"); 
    }); 
}); 

DEMO

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