2013-02-18 67 views
0

我正在尝试使用display:none和display:block来制作菜单。说实话,我不知道什么是最好的办法做到这一点。他们必须是图像,因为它们是我在Photoshop中使用的不同字体。这是我的HTML。Javascript(jQuery)隐藏和出现像菜单一样的css文件

<div id="wrap"> 
    <div> 
     <img class="difficulty-rally"src="assets/images/difficulty-rally.png"> 
     <div class="difficulties"> 
      <img class="difficulty-easy"src="assets/images/easy-green.png"> 
      <img class="difficulty-medium"src="assets/images/medium-green.png"> 
      <img class="difficulty-hard"src="assets/images/hard-green.png"> 
      <img class="difficulty-insane"src="assets/images/insane-green.png"> 
     </div> 
    </div> 
</div> 

这是我的CSS

@import 'reset.css'; 
/*///////////////////MAIN/////////////////////////*/ 
#wrap{ 
    height: 500px; 
    width: 800px; 
    display: block; 
    margin: 0 auto; 
    border: 1px solid black; 
    background-color: black; 
    z-index: -900000; 
    position: relative; 
    overflow: hidden; 
} 
#main{ 
    position: relative; 
} 
#header{ 
    height: 52px; 
    width: 295px; 
    margin: 0 auto; 
} 
.title{ 
    margin-top: 20px; 
    height: 52px; 
    width: 295px; 
    background-image: url(../images/title.png); 
} 
.difficulty-rally{ 
    position: absolute; 
    z-index: -1000; 
} 
.diificulties{ 
    position: absolute; 
    z-index: 20; 
    height: 230px; 
    width: 150px; 
    margin-top: 157px; 
    margin-left: 335px; 
} 
.difficulty-easy{ 
    position: absolute; 
    z-index: 30; 
    display: none; 
} 
.difficulty-medium{ 
    position: absolute; 
    z-index: 30; 
    top: 62px; 
    left: 2px; 
    display: block; 
} 
.difficulty-hard{ 
    position: absolute; 
    z-index: 30; 
    bottom: 62px; 
    left: 3px; 
    display: none; 
} 
.difficulty-insane{ 
    position: absolute; 
    z-index: 30; 
    bottom: 1px; 
    left: 2px; 
    display: none; 
}  

这是我的JavaScript(jQuery的)

$(document).ready(function(){ 
    $(document).on('keyup', function(e){ 
     if(e.keyCode === 27){ 
      window.location = 'minigame.php'; 
     } 
    }) 

    var easy = $('.difficulty-easy'); 
    var medium = $('.difficulty-medium'); 
    var hard = $('.difficulty-hard'); 
    var insane = $('.difficulty-insane'); 

    $(document).on('keyup', function(e){ 
     if(e.keyCode === 40 && medium.css('display') == "block"){ 
      medium.css({'display' : 'none'}); 
      hard.css({'display' : 'block'}) 
     } 
     if(e.keyCode === 38 && medium.css('display') == "block"){ 
      medium.css({'display' : 'none'}); 
      easy.css({'display' : 'block'}) 
     } 
     if(e.keyCode === 40 && easy.css('display') == "block"){ 
      easy.css({'display' : 'none'}); 
      medium.css({'display' : 'block'}) 
     } 
     if(e.keyCode === 38 && easy.css('display') == "block"){ 
      easy.css({'display' : 'none'}); 
      insane.css({'display' : 'block'}) 
     } 
    }) 

}); 

编辑:对不起,我忘了说明问题,基本上当我点击了媒体上它变得疯狂而不是容易!

我知道我没有完成一些选择,但感觉他们不工作我会在这里发表。

EDITx2:

easy.hide(); 
hard.hide(); 
insane.hide(); 
medium.show(); 

$(document).on('keyup', function(e){ 
    if(e.keyCode === 40 && medium.show();){ 
     medium.hide(); 
     hard.show(); 
    } 
    if(e.keyCode === 40 && hard.show();){ 
     hard.hide(); 
     insane.show(); 
    } 
}) 

答:

var current = 1; 
    var difficulties = $('#difficulties > img'); 

    $(document).on('keyup', function(e){ 
     if(e.keyCode === 40){ 
      current = current + 1; 
     } 
     if(e.keyCode === 38){ 
      current = current - 1; 
     } 

     var selectedIndex = current % difficulties.length; //so you can click enter and do something 

     if(e.keyCode === 13){ 
      alert($(difficulties.get(selectedIndex)).text()) //example of what you can do 
     } 

     $(difficulties.get(current % difficulties.length)).show().siblings().hide(); 
    }) 

}); 

回答

-1

使用jQuery,您可以使用.hide()隐藏的东西,.show()向他们展示,而不是用CSS

变化搞乱您的键控处理程序为:

var current = 1; 
var difficulties = $('#difficulties > img'); 


$(document).on('keyup', function(e){ 
    if(e.keyCode === 40){ 
     current = current + 1; 
    } 
    if(e.keyCode === 38){ 
     current = current - 1; 
    } 

    var selectedIndex = current % difficulties.length; //so you can click enter and do something 

    if(e.keyCode === 13){ 
     alert($(difficulties.get(selectedIndex)).text()) //example of what you can do 
    } 

    $(difficulties.get(current % difficulties.length)).show().siblings().hide(); 
}) 
+0

让我试试这个。 – 2013-02-18 07:49:35

+0

你是否把easy.hide();和其他的keyup处理程序外?顺便说一句,我没有投票(icant)idk谁做的。 – 2013-02-18 07:53:01

+0

我遇到了同样的问题! :(我点击向上键,它从中间跳到疯狂,即使它应该去容易。对不起.. uhhh – 2013-02-18 07:55:32