2013-02-01 41 views
13

Menümüzü gizlemek için biraz kod oluşturdum, menü tamamlanmadı ancak jQuery.slideUp() işlevini kullanmaya çalışıyorum ancak style="overflow: hidden;" kodunu eklediğimde bu yüzden .show öğemden biri #nav:after olan gizlidir. menüsünden buradajQuery ekleme stili = "taşma: gizli;"

dibine küçük bir ok ekler #nav:before js kodu

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

ve burada ben oluşturmasını .slideUp() nasıl durdurabilirim this site

üzerine sonucudur style="overflow: hidden;"?

+2

Bunun yerine ne yapmak istiyorsunuz? Kaybolmadan sadece kaymasını istiyorsanız, bunun yerine 'animate()' yi kullanabilirsiniz. – gideon

+0

siteye bakın, '.slideUp()' işlevini kullandıktan sonra okun kaybolmasını istemiyorum. – LegendaryLaggy

cevap

12

Çok deneyebileceğiniz slideUp() fonksiyonu ait callback'inde üzerinde overflow:hidden kaldırmalısınız

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

Yoksa css

#nav{overflow:visible!important} 
+0

Ve, neden * neden olmalıyız? Çünkü (Andrey'nin cevabından), bu, eski jQuery'deki bir hatadır. Şahsen, jQuery versiyonumu daha kullanışlı hale getirmeyi buldum. –

0

html'nin stil niteliğini değiştirerek varsayılan stili geçersiz kılın.

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

Kod sadece yanıtlar sadece bağlantıların yanıtları kadar kötüdür. Gerçekten cevaplar değiller. İyi bir cevap açıklamaları ve akıl yürütmeyi ve muhtemelen bazı kaynakları veya yetkileri içerir. – markus

+0

teşekkürler @ markus-tharkun. Bir açıklama eklediniz. – Srihari

0

bu deneyin ...

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

geçersiz kıl o tarz -

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

Bu eski jquery bug olduğunu bunu zorlayabilir. Bu kod standart işlev "slideDown" yerine geçer ve taşma özelliğini silin.

!(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, Bootstrap gibi sıfırlama ve çerçevelerde kutu boyutlandırması değiştirildiğinde yanlışlıkla ayarlanmış gibi görünüyor, ancak bu jQuery 1.11'de giderilmiştir. –

İlgili konular