핵심정리

jQuery 핵심 정리

아이티프로 2023. 1. 25.
반응형

유튜브 동영상 링크 - https://www.youtube.com/watch?v=dKOmNOR5D7I 

 

jQuery는 HTML 문서 작업 프로세스를 간소화하는 자바스크립트 라이브러리이며, jQuery 셀렉터는 DOM(Document Object Model)에서 요소를 선택하고 이에 대한 작업을 수행할 수 있다.

REACT VIEW등의 등장으로 사용성이 거의 사라졌지만 레거시 사이트에서 사용하는 경우가 있어서 알아두면 매우 편하게 페이지를 개발할 수 있다. 본 포스팅의 내용정도만 이해하면 개발하는데 문제가 없다. 

jQuery 셀렉터를 사용하여 태그 이름, 클래스 또는 ID를 기준으로 요소를 선택한 다음 jQuery 메서드를 사용하여 선택한 요소에 대해 작업을 수행할 수 있다.

jQuery 셀레터만 알아도 절반은 학습이 끝났다.

 

jQuery 사용하기 - CDN

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

 

jQuery 사용하기 - 내부자원사용의 경우 다운로드 후 해당 경로에서 가져오기

npm install jquery
<script src="path/to/jquery.js"></script>

 

jQuery 기본 사용 예

 

$(document).ready(function() { ~ }); 은 웹페이지가 모두 랜더링된 후 일어난 이벤트이며 이 이벤트에 실행될 스크립트를 작성한다.

 

jQuery 셀렉터 사용법

태그 요소는 $("태그명") : 그냥 태그

ID 요소는  $("#아이디") : 샵아이디

Class 요소는  $(".클래스") : 닷클래스(점클래스)

$("p").css("background-color", "red");

$("p.selected").css("font-size", "20px");

 

p태그 여러개에 대해 한번에 처리할 때 jQuery each 구분

 

input박스가 여러개에 대해서는 

$("input[type='text']").each(function() {
   var value = $(this).val();
   // update value in database
});

 

브라우저에서 원하는 요소를 선택하고 마우스 우클릭하면 검사가 나온다. 이걸 클릭하면 아래와 같다.

 

여기에서 다시 우측버튼을 클릭하면  Copy가 나오고 거기에서 Copy Selector를 하면 해당 요소의 셀렉턱를 알수 있다.

 

이 셀렉터를 복사해서 $("body > div.L3eUgb > div.o3j99.ikrT4e.om7nvf > form > div:nth-child(1) > div.A8SBwf > div.RNNXgb > div > div.a4bIc > input") 가능하다.

 

페이지를 구성하는 요소들은 셀렉터를 가지며 이 셀럭터를 통해 해당 요소를 객체로 반환받아 속성값을 제어할 때 jQuery는 용이하게 사용한다.

 

jsfiddle.net에서 테스트 https://jsfiddle.net/

html, css, javascript영역에 해당 코드를 작성하고 Run을 실행하면 테스트가 가능하다.

 

jQuery 셀렉터를 사용하여 배열데이터를  DOM에 추가

다음은 id 가 items-list인 ul 객체를 html에 만들고

data라는 오브젝트 배열을 제이쿼리 이치를 사용해 순차적으로 읽어서 li항목을 긴 문짜열 items를 생성한 뒤

제이쿼리의 html메서드를 사용해 긴 문짜열 items를 ul태그인 $("#items-list")에 항목으로 꽂아 넣는 예제입니다.

 

jQuery Ajax(에이작스) 로 JSON 데이터 가져와서 DOM에 추가 

JSON은 JavaScript Object Notation의 약어로 자바스크립트의  오브젝트와 배열과 크게 다르지 않다.

{} 오브젝트는 키와 값의 형태로 추가한다. 키와값 한쌍이 추가되면 콤마를 사용하며 값은 문자열, 숫자, 불린, 널, 배열, 오브젝트등이 할당될 수 있습니다. 문자열만 따옴표등으로 구분한다.  

{ "id": 1, "name": "item 1" } 처럼 오브젝트를 작성할 수 있으며 []배열에 오브젝트를 넣어서 주로 사용한다.

JSON 포맷의 배열을 JSON Array라고 한다.

 [
    { "id": 1, "name": "item 1" },
    { "id": 2, "name": "item 2" },
    { "id": 3, "name": "item 3" },
    { "id": 4, "name": "item 4" }
]

이처럼 오브젝트 여러개를 배열로 묶어 사용할 수 있다.

 

 

그리고, 이와 같은 자바스크립트 오브젝트 모델의 양식을 통신규약으로 사용한다.

원격 서버와 PC간에 오브젝트를 직접 전달할 수 없으므로 JSON문자열로 시리얼라이제이션되어 전송된다.

이 시리얼라이제이션된 문자열을 다시 자바스크립트 오브젝트로 변환하여 사용한다.

 

예제에서 사용하는 data.json파일 내용이다. jsonObject가 4개 있는 jsonArray이다.

[
    { "id": 1, "name": "item 1" },
    { "id": 2, "name": "item 2" },
    { "id": 3, "name": "item 3" },
    { "id": 4, "name": "item 4" }
]

$("#items-list").html(items);   데이터 결과를 items변수로 모으고 items-list객체 요소의  내부 html로 집어넣어라.  

 

jQuery Ajax(에이작스) 로 데이터 가져와서 폼에 뿌리기 

jQuery val()메소드로 각 폼요소 셀럭터에 값을 넣어주는 예제이며 각 컨트롤의 성격에 따라 데이터 대입방식이 조금씩 다르다.

 

{
    "inputValue": "Example Input",
    "checkboxValue": true,
    "selectValue": "Option 2",
    "radioValue": "Option 1",
    "textareaValue": "Example Textarea"
}

다음은 위에서 호출하는 data2.json파일이다.

 

jQuery Ajax로 폼에 있는 데이터 서버로 전송하기

- 간단한 유효성 체크 포함

 

$("#form").submit(function(event)     id가 form인 객체에 submit이벤트가 발생하면
    event.preventDefault();     submit이 진행되는 동안 다른 이벤트를 막고

    // validate form data
    var inputValue = $("#input-box").val();     셀렉터의 val()메서드를 통해 값을 가져온다. 
    if (!inputValue) {     값이 없으면 
        alert("input box에 값을 입력하시오.");     오류메시지 출력하고 
        return;     종료 리턴
    }

    var checkboxValue = $("#checkbox").is(":checked");    id가 checkbox인 체크박스는 checked여부를 가져온다.

    var selectValue = $("#select-box").val();     selectbox도 val() 메서드로 값을 가져온다.
    if (!selectValue) {
        alert("select box를 선택하시오.");
        return;
    }

    var radioValue = $("input[name='radio-group']:checked").val();.val()    radio 버튼은 checked된 것을 val() 메서드로 값을 가져온다.
    if (!radioValue) {
        alert("radio button을 선택하시오.");
        return;
    }

    var textareaValue = $("#textarea").val();    texarea도 val() 메서드로 값을 가져온다.

    // send data to server
    $.ajax({
        url: "submit",     서버측 요청경로는 submit이다. 
        type: "POST",     POST타입으로 폼 데이터를 전송한다. 
        data: {
            input: inputValue,
            checkbox: checkboxValue,
            select: selectValue,
            radio: radioValue,
            textarea: textareaValue
        },     {} 오브젝트에  input, checkbox, select, radio, textarea 속성에 값을 집어넣어 데이터를 전달 .
        success: function(response) {
            alert("서버에 전송이 완료되었습니다.");    ajax  처리성공 이벤트가 발생하면 성공메시지 출력.
        }
    });
});

@WebServlet("/submit")
public class FormSubmitServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        
        // validate, sanitize and process the data
        String inputValue = req.getParameter("input");
        boolean checkboxValue = Boolean.parseBoolean(req.getParameter("checkbox"));
        String selectValue = req.getParameter("select");
        String radioValue = req.getParameter("radio");
        String textareaValue = req.getParameter("textarea");

        // insert the data into the database or perform other actions
        // ...

        // return a response to the client
        resp.setContentType("application/json");
        resp.getWriter().write("{\"status\":\"success\"}");
    }
}

서버사이드 자바소스 예제임

 

jQuery 이벤트 핸들러

- 이벤트 핸들러는 html 요소에 click, change등의 이벤트가 발생했을 때 실행되는 함수를 정의한다.

- 자바스크립트에서는 이벤트기반으로 함수를 정의하여 서비스를 구현한다. 스크립트의 적절한 위치에 이벤트 핸들러를 구현하면 해당 요소에 이벤트가 발생할 때 함수내용이 실행된다. 함수명이 없는 함수를 가리켜 콜백함수라고 한다.

- $(this) 는 jQuery에서 이벤트를 받은 요소(객체) 자신이다. $(this).val() 은 자신의 값을 리턴한다는 뜻 이다.

- 아래와 같은 형태로 이벤트가 발생했을 때 각 이벤트 핸들러를 구현한다.

// Handle button click
$("#button").click(function() {
    alert("Button clicked!");
});

// Handle select box change
$("#select-box").change(function() {
    alert("Select box value changed to: " + $(this).val());
});

// Handle radio button change
$("input[name='radio-group']").change(function() {
    alert("Radio button value changed to: " + $(this).val());
});

// Handle checkbox click
$("#checkbox").click(function() {
    alert("Checkbox clicked, value is: " + $(this).is(":checked"));
});

 

jQuery는 셀렉터, Ajax, 폼 validatator, JSON 데이터 핸들링, 이벤트핸들러 정도만 알련 개발을 진행하는 데 전혀 문제가 없다. 다른 부분은 구글링으로 충분하다고 생각한다.

반응형

'핵심정리' 카테고리의 다른 글

HTML 핵심 요약 정리  (0) 2023.02.01
PYTHON 기초 정리  (0) 2023.01.27
React 기초 정리  (0) 2023.01.26
스프링으로 웹개발 기초  (0) 2023.01.25
SQL 기초 정리 by postgres  (0) 2023.01.25

댓글