2013-04-11 4 views
1

css : inline-block 인 경우 숨겨진 블록을 표시하는 데 문제가 있습니다.jquery 1.9로 숨겨진 인라인 블록 요소 표시

div.profile{ 
    display: inline-block; 
} 


<div class='profile' style='display: none;'>profile info</div> 

내가) (쇼 $ ('프로필을.') 할 수는 스타일이되는 때 =. '디스플레이 : 블록'(내가 불을 지르고에서 볼 수 있습니다) 내 CSS 스타일을 overrites ...

어떻게 해결할 수 있습니까?

btw, jquery 1.4에서는 올바르게 작동합니다.

감사합니다.

UPD는

$ .CSS ('디스플레이', '인라인 블록') IMO 보편적 인 해결책은 아니다.

+0

인라인 블록이 보이고 hide() 및 show()가 실행되면 인라인 블록이됩니다. –

답변

3

show 기능을 사용하는 대신 CSS 스타일을 변경해야 block으로 바뀝니다. 이 경우 inline-block 작품에 명시 적으로 설정하는 동안

$('.profile').css('display', 'inline-block'); 
+0

예, 작동하지만 jquery 버그가 아닙니까? 인라인 블록이 보이면 hide()와 show()가 인라인 블록이 될 것이므로 –

+0

@DmitriyApollonin - jQuery는 CSS에 지정된 것이 'display : none'인지 알 수 없기 때문에. 그리고'.show()'는 CSS의 내용과 상관없이 반드시 * 표시해야합니다. 그것이 유일한 이유 일 것입니다. 이것은 실제로 1.9 이전의 버그에 대한 수정과 같습니다. – techfoobar

+0

@techfoobar는 괜찮습니다. 문서에 따르면 _ 요소에 인라인 표시 값이 있고 숨겨져 표시되면 다시 인라인으로 표시됩니다. _ 그래서 jquery는 특정 항목에 대해 '알고 있습니다.' CSS 속성. 아니면 내가 옳지 않은가? –

0
$('.profile').css('display', 'inline-block') 
0

, 당신이 이상적으로 CSS에서 오는 어떤 적용 ''로 설정해야한다, 그것을 inline, 또는 inline-block 또는 block

$('.profile').css('display', ''); // switch it back to whats specified in the CSS 
+0

아마 JQuery가 show 메소드에서해야 할 일일 것입니다. – jalynn2

+0

jQuery는 CSS에 지정된 것이 'display : none'인지 여부를 알 수 없습니다. 그리고'.show()'는 CSS의 내용과 상관없이 반드시 * 표시해야합니다. 그것이 유일한 이유 일 것입니다. – techfoobar

+0

물론 그렇습니다. – jalynn2