изменить поведение slideToggle () для отображения:inline-block вместо display:block?

цель slideToggle() div должен быть display:inline-block вместо display:block когда он открыт. Есть ли способ изменить поведение jquery здесь?

Edit:

на данный момент я использую jQuery 1.7.0. Кроме того,<div> изначально display:none и расширяться до display:inline-block после нажатия на ссылку; но, по-видимому, состояние по умолчанию для slideToggle () в этой ситуации display:block ...

4 ответов


маленькая птичка сказала мне...

$('#my-block').slideToggle('medium', function() {
    if ($(this).is(':visible'))
        $(this).css('display','inline-block');
});

просто попробуйте скрыть свой блок с помощью скриптов (dont display:none через стили)

HTML-код

<div class="ib">inline-block</div> <a href="#" class="toggle">toggle this</a>

в CSS

.ib{
    display:inline-block;
    background:red;
}

JavaScript

$(".ib").hide();
$(".toggle").bind("click", function(){
    $(".ib").slideToggle();
    return false;
})

пример


Если вы обнаружите, что видите нежелательную "вспышку неустановленного контента", вы также можете использовать встроенный стиль. Обычная мудрость "Не ставьте стиль inline" действительно предназначена для вашего основного стиля, а не для визуальных эффектов (все эффекты JS просто добавляют встроенные стили в конце концов).

конечно, содержимое не будет видно пауками поисковой системы JS-disabled, если это важно. Если это не важно, ты молодец!

обновление скрипку @fliptheweb по : http://jsfiddle.net/GregP/pqrdS/3/


вы на старой версии jQuery? Это уже должно было быть исправлено, см. обсуждение здесь:

http://bugs.jquery.com/ticket/2185