2012-03-08 3 views
284

jQuery에는 .hide().show() 개의 CSS display: none 설정 방법이 있습니다.가시성을 설정하는 jQuery .hide()와 같습니다. hidden

visibility: hidden 설정을 지정할 수있는 동일한 기능이 있습니까?

나는 .css()을 사용할 수 있다는 것을 알고 있지만, .hide() 정도의 기능을 선호합니다. 감사.

+2

사용하는 것입니다 .toggle()'에 – zerkms

+0

나는 jQuery의 toggleClass() 메소드에 대한 팬이기도하다. http://jqueryui.com/toggleClass/ 아래의 내 대답에 나와있는 예제를 확인하자. http://stackoverflow.com/a/ 14632687/1056713 –

답변

364

자신의 플러그인을 만들 수 있습니다.

jQuery.fn.visible = function() { 
    return this.css('visibility', 'visible'); 
}; 

jQuery.fn.invisible = function() { 
    return this.css('visibility', 'hidden'); 
}; 

jQuery.fn.visibilityToggle = function() { 
    return this.css('visibility', function(i, visibility) { 
     return (visibility == 'visible') ? 'hidden' : 'visible'; 
    }); 
}; 

당신은 내가하지 않는 것이 좋습니다 원래 jQuery를 toggle()을, 과부하하려면

...

!(function($) { 
    var toggle = $.fn.toggle; 
    $.fn.toggle = function() { 
     var args = $.makeArray(arguments), 
      lastArg = args.pop(); 

     if (lastArg == 'visibility') { 
      return this.visibilityToggle(); 
     } 

     return toggle.apply(this, arguments); 
    }; 
})(jQuery); 

jsFiddle.

+1

알렉스, 감사합니다. 대신'.toggle()'함수를 사용할 수 있습니까? – TMS

+0

@Tomas 다른 스크립트를 깨뜨릴 수있는'toggle()'을 섀도 잉해야 할 것입니다. 원한다면'toggle()'에 추가 인수를 추가하여 'visibility'또는 'display'를 토글해야하는지 여부를 지정할 수 있습니다.그러나 마지막 예제에서는 사용자 정의를 사용합니다. :) – alex

+0

'show' (속도, 여유, 콜백)의 추가 매개 변수를 지원하는 방법에 대한 예제를 게시 할 수 있습니까? – georg

89

를 내장 한이 아니라 당신은 당신의 자신의 아주 쉽게 작성할 수

(function($) { 
    $.fn.invisible = function() { 
     return this.each(function() { 
      $(this).css("visibility", "hidden"); 
     }); 
    }; 
    $.fn.visible = function() { 
     return this.each(function() { 
      $(this).css("visibility", "visible"); 
     }); 
    }; 
}(jQuery)); 

당신은 다음과 같이이를 호출 할 수

$("#someElem").invisible(); 
$("#someOther").visible(); 

을 여기 working example입니다.

+16

+1'.each' : http://jsfiddle.net/nGhjQ/2/이 필요 없습니다. – pimvdb

+1

좋은 점, 습관의 힘. 감사. 알렉스의 대답 +1! –

+0

그냥 두 가지 함수를'function ($) {...} (jQuery)); 래퍼에 래핑하는 것이 무엇인지 궁금합니다. 이전에 jQuery에서 자신의 함수를 정의한 적이 한번도 없었습니다. 저는 항상 직선 자바 스크립트에서 함수를 정의했습니다. – VoidKing

19

visibility : hidden으로 숨기기의 표준 기능 만 있으면 현재 레이아웃을 유지하기 위해 hide의 콜백 기능을 사용하여 태그의 CSS를 변경할 수 있습니다. Hide docs in jquery

예 :

$('#subs_selection_box').fadeOut('slow', function() { 
     $(this).css({"visibility":"hidden"}); 
     $(this).css({"display":"block"}); 
}); 

이 사업부를 숨기기 위해 정상 멋진 애니메이션을 사용하지만 애니메이션 완료 후 숨겨진에 대한 가시성을 설정하고 차단하는 표시합니다.

예 :. http://jsfiddle.net/bTkKG/1/

에만 CSS를 사용하기 때문에 (난 당신이 $ ("# 금주 모임") CSS() 솔루션을 원하는 didnt가 알고 있지만 그것이 경우에 당신이 지정하지 않은) 방법 당신이 잃을 생기.

48

이 작업을 수행하는 더 간단한 방법은 당신이 당신의 자신의 기반을 구현할 수 있습니다 jQuery의 toggleClass() 방법

CSS

.newClass{visibility: hidden} 

HTML

<a href="#" class=trigger>Trigger Element </a> 
<div class="hidden_element">Some Content</div> 

JS

$(document).ready(function(){ 
    $(".trigger").click(function(){ 
     $(".hidden_element").toggleClass("newClass"); 
    }); 
}); 
+1

나는이 접근법을 좋아한다. 별도의 스타일 시트가 필요하기 때문에 자급 자족하지 않지만 스타일 시트에 모든 스타일 정보를 유지하는 데 도움이됩니다. 가시성을 사용하지 않으려면 모든 js 코드를 변경하는 대신 한 곳에서 CSS 태그를 변경할 수 있습니다. – vaughan

+17

부트 스트랩을 사용하는 경우이 클래스는 보이지 않습니다. – user239558

관련 문제