ready

Specify a function to execute when the DOM is fully loaded.
DOM이 완전하게 로드되면 실행할 함수를 지정한다.
ready(handler) , ready 메서드에 콜백함수 지정해라
handler : function() {...}
DOM이 완전하게 로드되면 ready 메서드에 지정한 콜백함수 실행된다.

 

 

 

<script>
    console.log('hello'); // 가능
    $("#my-div").css("backgroundColor", "red"); // 불가능
</script>
<body>
    <div id="my-div">내 div</div>
</body>

 

다음과 같이 DOM 생성 완료가 아직 안된 상태에서 my-div 가 만들어지지 않았는데, 접근한다? 저 코드는 불가능하다. 스크립트가 위에 있기 때문이다.

 

 

    <script>
        function myFunc() {
            $("#my-div").css("backgroundColor", "red");
        }
    </script>
</head>
<body>
    <div id="my-div">

    </div>
    <button onclick="myFunc()">클릭하기</button>
</body>

 

다음과 같이 버튼을 눌러서 특정 함수를 실행할 경우에는 실행이 된다.

 

 

<body>
    <div id="my-div">내 div</div>
</body>
</html>
<script>
    console.log('hello'); // 가능
    $("#my-div").css("backgroundColor", "red"); // 가능
</script>

 

만일 스크립트를 html 밑에 작성할 경우 실행이 된다. div가 이미 만들어졌고 그 다음에 접근하는 것이기 때문에.

 

 

 

그럼 첫번째 상황일 경우 어떻게 접근해야 할까?

$(document).ready(function() {
   $("#my-div").css("backgroundColor", "red"); // 가능
})

 

다음과 같이 ready 함수를 쓴다. ready 메서드에 콜백함수는 DOM이 완전하게 로드되면 실행한다.

 

 

document.addEventListener('DOMContentLoaded', function() {
    document.getElementById("my-div").style.backgroundColor='red';
}) // 익명함수 형태의 콜백함수, 즉시 실행함수

 

dom 방식으로는 다음과 같이 작성한다. addEventListener 메서드에 'DOMContentLoaded' 를 이용한다.

 

 

 

$(function() {  //ready랑 똑같음
    $("#my-div").css("backgroundColor", "red");
})

 

Jquery 버전을 좀 더 간단하게 줄인 코드이다. 위에 ready를 사용한 것의 축약 버전이다. 코드가 짧아서 좋지만 가독성은 떨어지는 편이다.

prev, prevAll

<ul>
    <li>리스트1</li>
    <li>리스트2</li>
    <li id="li3">리스트3</li>
    <li>리스트4</li>
    <li>리스트5</li>
</ul>
<button onclick="myFunc()">클릭하기</button>
$("#li3").prev().css("backgroundColor","red");
//previous

 

prev는 이전 요소를 선택하는 기능을 한다. 리스트3 을 선택해서, 이전 요소의 배경색을 빨간색으로 선택하면 이전 요소인 리스트2의 배경색이 빨갛게 변한다.

 

 

 

$("#li3").prevAll().css("backgroundColor","red");

prevAll은 이전 전체 요소들을 선택하는 기능을 한다. 리스트3의 이전 요소들인 리스트1과 리스트2의 배경색이 변한다.

 

 

 

 

next, nextAll

$("#li3").next().css("backgroundColor","red");

next는 선택한 요소의 다음 요소를 선택하는 기능이다. 선택된 리스트3의 다음 요소인 리스트4의 배경색이 변경된다.

 

 

 

$("#li3").nextAll().css("backgroundColor","red");

nextAll은 선택한 요소의 다음 요소 전체를 선택한다. 리스트3의 다음 요소들인 리스트4, 리스트5 모두 배경색이 변한다.

 

 

 

 

siblings

$("#li3").siblings().css("backgroundColor","red");
//siblings - 형제, 자매 (이전 요소 모두, 다음 요소 모두)

siblings는 형제, 자매라는 뜻으로, 이전 요소 모두와 다음 요소 모두를 선택하는 기능을 한다. 선택된 리스트3의 형제 요소들 모두 배경색을 변경한다.

 

 

 

 

eq

$("ul>li").eq(2).css("backgroundColor","red");
//eq(2) - 리스트의 3번째 (0부터 시작함)

eq 메서드는 해당 모든 리스트 중에서 몇번째 요소를 선택할지 정할 수 있다. 0번째 요소 부터 시작하며, 첫번째 리스트는 eq(0)이라고 적어야 하니 주의해야 한다. 리스트3을 선택하기 위해 eq(2)로 작성했다.

 

 

 

 

even

$("ul>li").even().css("backgroundColor","red");
// 0, 2, 4 ... 짝수번째 선택

0번, 2번, 4번 같은 짝수번째 요소를 선택할 때 사용한다.

 

 

 

 

odd

$("ul>li").odd().css("backgroundColor","red");
// 1, 3, 5 ... 홀수번째 선택

1번, 3번 5번 같은 홀수번째 요소를 선택할 때 사용한다.

'JQuery' 카테고리의 다른 글

[JQuery] val메서드, getter, setter  (0) 2024.11.18
[JQuery] ready 함수  (0) 2024.11.13
[JQuery] $ 메서드와 css 메서드 선택자  (0) 2024.11.08
[JQuery] 세팅과 사용  (1) 2024.11.07
    @Query(value = "select id, name from product where name = :productName", nativeQuery = true)
    Page<Product> findAllByNameWithPagination(String productName, Pageable pageable);

 

페이징으로 조회 할 때, 다음과 같이 기본적인 쿼리 형식으로 조회할 경우 에러가 발생할 확률이 높아진다.

 

 

 

    @Query(value = "select id,name from product a where name = :productName", nativeQuery = true
            ,countQuery = "select count(*) from product where name = :productName ")
    Page<Product> findAllByNameWithPagination(String productName, Pageable pageable);

 

countQuery 를 이용하여 총 갯수를 구한 후, 조회한다면 에러가 발생하지 않는다.

'JPA' 카테고리의 다른 글

[JPA] JPA의 페이징 - Pageable  (0) 2024.11.26
[JPA] @OneToOne, 일대일 관계  (0) 2024.02.26
[JPA] 값 타입 (Value Object)  (0) 2024.02.26
[JPA] SQL 쿼리를 활용  (0) 2024.02.19
[JPA] 식별자 생성  (0) 2024.02.19

+ Recent posts