2013-02-01 15 views
13

Utworzono trochę kodu, aby ukryć moje menu, menu nie jest kompletne, ale próbuję użyć funkcji jQuery.slideUp(), ale dodaje style="overflow: hidden;" do kodu, więc gdy używam .show, ukryty jest jeden z moich elementów, który jest #nav:after i #nav:before który dodaje małą strzałkę na dole menujQuery adding style = "overflow: hidden;"

oto kod js

$("span#start_button").click(function() { 
     if ($("#nav").is(":hidden")) { 
      $("#nav").show("fast"); 
     } else { 
      $("#nav").slideUp(); 
     } 
    }); 

i oto wynik na this site

Jak mogę przestać .slideUp() od tworzenia style="overflow: hidden;"?

+2

Co chcesz zamiast tego zrobić? Jeśli chcesz, aby po prostu wysunął się bez znikania, możesz zamiast tego użyć 'animate()'. – gideon

+0

Spójrz na stronę, nie chcę, aby strzałka zniknęła po użyciu funkcji '.slideUp()' – LegendaryLaggy

Odpowiedz

12

Musisz usunąć overflow:hidden na oddzwanianie na slideUp() funkcji więc można spróbować

$("#nav").slideUp('fast', function(){ $('#nav').css('overflow','visible') }); 

Albo można zmusić go css

#nav{overflow:visible!important} 
+0

I, * dlaczego * powinniśmy? Ponieważ (z odpowiedzi Andreya), jest to błąd w starszych jQuery. Osobiście uważam, że aktualizacja mojej wersji jQuery jest wygodniejsza. –

0

Zastępuje domyślną stylizację, modyfikując atrybut stylu html.

else { 
     $("#nav").slideUp(); 
     $("#nav").attr("style","overflow:visible"); 
    } 
+0

Odpowiedzi tylko na kod są prawie tak złe, jak tylko odpowiedzi dotyczące linków. W rzeczywistości nie są to odpowiedzi. Dobra odpowiedź zawiera wyjaśnienia i rozumowanie, a także niektóre źródła lub autorytety. – markus

+0

dzięki @ markus-tharkun. Dodałem wyjaśnienie. – Srihari

0

Spróbuj tego ...

else { 
    $("#nav").slideUp(); 
    $("#nav").css("overflow","visible"); 
} 
1

Zastąp że styl -

$("#nav").slideUp(); 
    $("#nav").css({'overflow':'visible'}); 
6

To bug w starszym jQuery. Ten kod zastępuje funkcję standart "slideDown" i usuń właściwość przepełnienia.

!(function (jQuery, origSlideDown) { 
jQuery.fn.slideDown = function (speed, easing, callback) { 
    var self = this; 
    var args = Array.prototype.slice.call(arguments); 
    var origCallback; 

    for (var i = 0, len = args.length; i < len; i++) { 
     if (jQuery.isFunction(args[i])) { 
      origCallback = args[i]; 
      args[i] = function() { 
       origCallback.call(this); 
       self.css('overflow', ''); 
      } 
     } 
    } 

    if (!origCallback) { 
     args.push(function() { 
      self.css('overflow', ''); 
     }); 
    } 

    return origSlideDown.apply(this, args); 
}; 
})(jQuery, jQuery.fn.slideDown); 
+0

jQuery.support.shrinkWrapBlocks wydaje się być ustawione przypadkowo, gdy rozmiar skrzynek zostanie zmieniony w resetach i frameworkach, takich jak Bootstrap, ale zostało to naprawione w jQuery 1.11. –

Powiązane problemy