2013-02-01 10 views
13

내 메뉴를 숨기려면 약간의 코드를 만들었습니다. 메뉴는 완료되지 않았지만 jQuery.slideUp() 함수를 사용하려고했지만 코드에 style="overflow: hidden;"을 추가합니다. 따라서 .show를 사용하면 내 요소 중 하나가 #nav:after이고 메뉴 여기jQuery 스타일 추가 = "오버플로 : 숨김;"

의 바닥에 작은 화살표를 추가 #nav:before는 JS 코드

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

이며, 여기에 내가 만들 수 .slideUp()을 중지 할 수 있습니다 방법 this site

의 결과입니다 style="overflow: hidden;"?

+2

대신 무엇을하고 싶습니까? 사라지지 않고 슬라이드를하기를 원할 경우 대신'animate()'를 사용할 수 있습니다. – gideon

+0

사이트에서 보면,'.slideUp()'함수를 사용하면 화살표가 사라지기를 원하지 않는다. – LegendaryLaggy

답변

12

당신은 그래서 당신이 시도 할 수 slideUp() 기능 의 콜백에 overflow:hidden를 제거해야합니다

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

또는 당신은 CSS를

#nav{overflow:visible!important} 
+0

그리고 * 왜 *해야합니까? (Andrey의 답변에서) 이것은 이전 jQuery의 버그입니다. 개인적으로 jQuery 버전 업그레이드가 더 편리하다는 것을 알았습니다. –

0

html의 style 속성을 수정하여 기본 스타일을 재정의하십시오.

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

코드 전용 답변은 링크 전용 답변만큼 나쁘다. 그들은 전혀 대답하지 않습니다. 좋은 대답은 설명과 추론을 포함하고 아마도 어떤 출처 나 권위를 포함 할 수 있습니다. – markus

+0

thanks @ markus-tharkun. 설명을 추가했습니다. – Srihari

0

이 시도 ...

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

재정 해당 스타일 -

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

이 나이가 JQuery와의 bug입니다하여 강제 할 수 있습니다. 이 코드는 standart 함수 "slideDown"을 대체하고 오버플로 속성을 삭제합니다.

!(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는 상자 크기 조정이 부트 스트랩과 같은 재설정 및 프레임 워크에서 변경 될 때 부주의하게 설정되는 것으로 보이지만 jQuery 1.11에서 수정되었습니다. –

관련 문제