2013-02-01 51 views
13

Ich habe ein bisschen Code erstellt, um mein Menü zu verbergen, das Menü ist nicht vollständig, aber ich versuche jQuery.slideUp() Funktion zu verwenden, aber es fügt style="overflow: hidden;" zum Code hinzu, wenn ich .show eines meiner Elemente verwende, das ist #nav:after und #nav:before, die an der Unterseite des MenüsjQuery adding style = "Überlauf: versteckt;"

hier ist der js Code

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

und hier ist das Ergebnis auf this site

einen kleinen Pfeil fügt hinzu, wie ich .slideUp() von der Erstellung stoppen style="overflow: hidden;"?

+2

Was möchten Sie stattdessen tun? Wenn Sie möchten, dass es einfach hochgleitet, ohne zu verschwinden, können Sie stattdessen 'animate()' verwenden. – gideon

+0

auf der Website suchen, ich möchte nicht, dass der Pfeil nach der Verwendung der '.slideUp()' -Funktion verschwinden – LegendaryLaggy

Antwort

12

Sie müssen die overflow:hidden auf den Rückruf der slideUp() Funktion entfernen so können Sie versuchen,

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

Oder man kann es durch

css zwingen
#nav{overflow:visible!important} 
+0

Und, warum sollten wir? Weil (aus Andreys Antwort), dies ist ein Fehler in älteren jQuery. Persönlich fand ich die Aktualisierung meiner jQuery-Version bequemer. –

0

Überschreiben Sie den Standardstyling, indem Sie das style-Attribut von html ändern.

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

Code nur Antworten sind fast so schlecht wie Link nur Antworten. Sie sind überhaupt keine Antworten. Eine gute Antwort enthält Erklärungen und Begründungen und möglicherweise einige Quellen oder Befugnisse. – markus

+0

danke @ markus-tharkun. Habe eine Erklärung hinzugefügt. – Srihari

0

Try this ...

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

außer Kraft setzen, dass Stil -

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

Dies ist bug bei älteren jquery. Dieser Code ersetzt die Standartfunktion "slideDown" und löscht die Überlaufeigenschaft.

!(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 scheint versehentlich festgelegt zu werden, wenn Box-Sizing in Zurücksetzungen und Frameworks wie Bootstrap geändert wird, aber das ist in jQuery 1.11 behoben. –

Verwandte Themen