切换div的可见性属性

tfe*_*r77 40 javascript css jquery toggle show-hide

我在div中有一个HTML 5视频.然后我有一个自定义播放按钮 - 工作正常.
并且我将视频的可见性设置为在加载时隐藏,并且在单击播放按钮时可见,当再次单击播放按钮时,如何将其返回到隐藏状态?

function showVid() {
  document.getElementById('video-over').style.visibility = 'visible';
}
Run Code Online (Sandbox Code Playgroud)
#video-over {
  visibility: hidden;
  background-color: rgba(0, 0, 0, .7)
}
Run Code Online (Sandbox Code Playgroud)
<div id="video-over">
  <video class="home-banner" id="video" controls="">
    <source src="http://video-js.zencoder.com/oceans-clip.mp4" type='video/mp4' />
    <source src="http://video-js.zencoder.com/oceans-clip.webm" type='video/webm' />
    <source src="http://video-js.zencoder.com/oceans-clip.ogv" type='video/ogg' />
    </video>
</div>

<button type="button" id="play-pause" onclick="showVid();">
      <img class="img-home-apply" src="/wp-content/images/apply-pic.png" alt="Apply Now">
      </button>
Run Code Online (Sandbox Code Playgroud)

我基本上只是试图在可见和隐藏的两种状态之间切换它,除非我不能使用切换,因为该显示并隐藏了div.我需要它,只是隐藏,所以它保持正确的高度.

tb1*_*b11 69

使用jQuery:

$('#play-pause').click(function(){
  if ( $('#video-over').css('visibility') == 'hidden' )
    $('#video-over').css('visibility','visible');
  else
    $('#video-over').css('visibility','hidden');
});
Run Code Online (Sandbox Code Playgroud)

  • $('#video-over').css('visibility',$('#video-over').css('visibility')=='hidden'?'visible':'hidden'); (9认同)

小智 27

我知道这是一个老问题,但我遇到它研究一个不同的问题.

根据jquery文档,调用不带参数的toggle()将切换可见性.

    $('#play-pause').click(function(){
        $('#video-over').toggle();
    });
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/Q47ya/

  • 注意css属性'visibility'和'display'之间的区别.'toggle()'改变'display'属性,该属性将隐藏元素并使空间对其他元素"可用",而'visibility'则元素保持占用空间.正如OP在最后一句中说的那样,这就是'toggle()'在这里不起作用的原因 (45认同)
  • "根据jquery文档调用toggle()而不使用参数将切换可见性." 不,它没有.可见性和显示是两个不同的事物,切换工作在显示,而不是可见性. (2认同)