0

编码 :

网页:

<div id="Container" class="Container">
<div id="PLayer"  class="player" ></div>
</div>

CSS:

<style type="text/css">
 .Container
 {
  width:200px;
   height:200px;
  }
 .player
{
 width:10px;
 height:10px;
 background-color:Red;
 position: absolute;
 }   
</style>

js:

$("body").keydown(function (e) {

        var KeyID = e.KeyCode || e.which;
        if (KeyID === 39) //right 
        {
            $("#Player").animate({ 'right': '20px' });
        }
    });

但是玩家似乎根本没有任何建议?

4

3 回答 3

1

你应该让它从当前位置向右移动 20px:

$(".Player").animate({ 'right': '+=20px' });
于 2013-07-13T07:23:21.670 回答
0

您必须匹配 id 上的大小写。你有:

id="PLayer"

和:

$("#Player")

将元素 id 中的大写“L”更改为小写,它将起作用:http: //jsfiddle.net/V27DZ/1/

...假设您在元素之后出现的脚本块中有 JavaScript 代码,或者您已将其包装在文档就绪处理程序中。

另请注意,通过为right属性设置动画,您可以设置它与页面右侧边缘的距离。如果您打算让它简单地移动到其当前位置右侧超过 20px,请改为执行以下操作:

$("#Player").animate({ 'left': '+=20px' });

即在当前左侧位置增加 20px。给它一个初始位置也无妨:http: //jsfiddle.net/V27DZ/2/

最后,请注意您不必进行测试e.keyCode,因为 jQuerye.which会为您标准化,但如果您进行测试e.keyCode,请记住 JS 是区分大小写的,并且您需要一个小写的“k”。

于 2013-07-13T07:33:28.853 回答
0

它会工作,但使用类选择器。

$(".Player").animate({ 'right': '+=20px' });

如果您有多个将 Player 作为类值的 div,那么所有 div 都会移动。

于 2013-07-13T07:27:07.857 回答