2017-12-10 1 views
0

CSS Grid와 jQuery를 실험 중이며 여기에 붙어 있습니다. 나는, 나는 console.log을 인쇄 할 수 있습니다 내 화살표 키의 방향으로 상자를 확장하기 위해 노력하고있어하지만Jquery 객체의 CSS 속성 값을 늘리는 것

$(document).ready(function() { 
 
    console.log("ready!"); 
 

 
    $(document).keypress(function(event) { 
 
    console.log(("Key: " + event.which)); 
 
    }); 
 

 
    const box = { 
 
    leftSide: $('.boxA').css('grid-column-start'), 
 
    rightSide: $('.boxA').css('grid-column-end'), 
 
    topSide: $('.boxA').css('grid-row-start'), 
 
    bottomSide: $('.boxA').css('grid-row-start'), 
 

 
    moveLeft: function() { 
 
     if (this.leftSide > 1) { 
 
     console.log(this.leftSide); 
 
     $('.boxA').css('grid-row-start', function() { 
 
      return box.leftSide - 1; 
 
     }); 
 
     } 
 
    } 
 
    } 
 

 
    $(document).keydown(function(e) { 
 
    switch (e.which) { 
 
     case 37: 
 
     box.moveLeft(); 
 
     break; 
 

 
     case 38: // up 
 
     break; 
 

 
     case 39: // right 
 
     break; 
 

 
     case 40: // down 
 
     break; 
 

 
     default: 
 
     return; // exit this handler for other keys 
 
    } 
 
    e.preventDefault(); // prevent the default action (scroll/move caret) 
 
    }); 
 
});
.mediumboxes { 
 
    width: 100vw; 
 
    height: 100vh; 
 
    background-color: blue; 
 
    display: grid; 
 
    grid-template-columns: repeat(20, 5%); 
 
    grid-template-rows: repeat(10, 10%); 
 
} 
 

 
.boxA { 
 
    display: block; 
 
    grid-column-start: 2; 
 
    grid-column-end: 3; 
 
    grid-row-start: 1; 
 
    grid-row-end: 2; 
 
    background-color: red; 
 
} 
 

 
.boxB { 
 
    display: block; 
 
    grid-column: 2/3; 
 
    grid-row: 1/11; 
 
    background-color: orange; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

내가 값을 증가하고자 그것은 grid-column-start 값을 업데이트하지 않습니다 leftSide의 전체 DOM 경로를 다시 지정하지 않아도됩니다.

this.leftside과 관련하여 만 가능합니까?

+0

는 자신의 값입니다 가지고 당신이'.boxA'의 각 인스턴스가 필요하십니까? css ('grid-column-start')'는 콜렉션에서 첫 번째로 일치하는 요소의 값만 반환한다. (둘 이상있는 경우) – charlietfl

+0

@charlietfl no. boxA는 단일 요소이다. 자신의 값으로 . 박스 A { 디스플레이 : 블록; grid-column-start : 2; grid-column-end : 3; 그리드 - 행 - 시작 : 1; 그리드 - 행 끝 : 2; background-color : red; } – Marco

+0

@ Marco 질문에 HTML 부분을 추가 할 수 있습니까? –

답변

0

예. 그냥 할 this.leftSide = this.leftSide - 1;

코드는 마치 leftSide이 기능을하는 것처럼 보입니다. 당신이 그것을 과제로 바꾸 었다고 가정하면, 코드의 오류는 없습니다.

는 여기를 참조하십시오 : http://jsbin.com/pacikas/2/edit?js,console

+0

질문에 뭔가 빠지면 ​​물론 저를 바로 잡으십시오! –

+0

그것은 작동하지 않는다, 그것은 DOM의 값을 갱신하지 않을 것이다. – Marco