IT Study

jQuery 정리

riul 2023. 1. 31.
반응형

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

 

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() {
  $("p").css("background-color", "red");
});

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

 

jQuery 셀레터 사용법

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

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

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

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

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

 

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

$("p").each(function() {
  $(this).css("background-color", "red");
});

 

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는 용이하게 사용한다.

 

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

<ul id="items-list">

</ul>

 

var data = [
    { "id": 1, "name": "item 1" },
    { "id": 2, "name": "item 2" },
    { "id": 3, "name": "item 3" },
    { "id": 4, "name": "item 4" }
];

var items = "";

$.each(data, function(key, val) {
  items += "<li>" + val.name + "</li>";
});

$("#items-list").html(items);

 

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

$.ajax({
  url: "data.json",
  dataType: "json",
  success: function(data) {
    var items = [];
    $.each(data, function(key, val) {
      items.push("<li id='" + key + "'>" + val + "</li>");
    });
    $("<ul/>", {
      "class": "my-new-list",
      html: items.join("")
    }).appendTo("body");
  }
});

var inputValue = "example";
$.({   jquery ajax를 사용해서
  url: "data.json",   data.json를 호출하고 
  data: { input: inputValue },    data는 input파라미터에 값은  inputVlue 변수값 "example" 
  dataType: "json",   data.php를 호출하고 
  success: function(data) {   요청이 성공했을 때 
    var items = [];    item이라는 배열을 선언하고  
    $.each(data, function(key, val) {     .each문으로  키, 값을 반복해서 가져와서 
      items.push("<li id='" + key + "'>" + val + "</li>");   li 태그에 키와 값으로 배열을 추가하고 
    });
    $("<ul/>", {
      "class": "my-new-list",
      html: items.join("")
    }).appendTo("body");    body아래에 ul태그의 클래스네임은 my-new-list으로 해서 item배열을 조인해서 추가하라  
  }
});

 

$.ajax({
  url: "data.json",
  dataType: "json",
  success: function(data) {
    var items = "";
    $.each(data, function(key, val) {
      items += "<li>" + val.name + "</li>";
    });
    $("#items-list").html(items);
  }
});

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

 

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

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

 

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

$.ajax({
  url: "data.json",
  dataType: "json",
  success: function(data) {
    // populate input box
    $("#input-box").val(data.inputValue);

    // populate checkbox
    if(data.checkboxValue) {
        $("#checkbox").prop("checked", true);
    } else {
        $("#checkbox").prop("checked", false);
    }

    // populate select box
    $("#select-box").val(data.selectValue);

    // populate radio button
    $("input[name='radio-group'][value='" + data.radioValue + "']").prop("checked", true);

    // populate textarea
    $("#textarea").val(data.textareaValue);
  }
});

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

 

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

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

 

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

- 간단한 유효성 체크 포함

$("#form").submit(function(event) {
    event.preventDefault(); // prevent the form from submitting

    // validate form data
    var inputValue = $("#input-box").val();
    if (!inputValue) {
        alert("input box에 값을 입력하세요.");
        return;
    }

    var checkboxValue = $("#checkbox").is(":checked");

    var selectValue = $("#select-box").val();
    if (!selectValue) {
        alert("select box를 선택하세요.");
        return;
    }

    var radioValue = $("input[name='radio-group']:checked").val();
    if (!radioValue) {
        alert("radio button을 선택하세요.");
        return;
    }

    var textareaValue = $("#textarea").val();
    //textarea는 값을 안넣어도 무시

    // send data to server
    $.ajax({
        url: "submit",
        type: "POST",
        data: {
            input: inputValue,
            checkbox: checkboxValue,
            select: selectValue,
            radio: radioValue,
            textarea: textareaValue
        },
        success: function(response) {
            alert("서버로 전송이 완료되었습니다.");
        }
    });
});

$("#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 데이터 핸들링, 이벤트핸들러 정도만 알련 개발을 진행하는 데 전혀 문제가 없다. 다른 부분은 구글링으로 충분하다고 생각한다.

 
반응형

'IT Study' 카테고리의 다른 글

자바스크립트 정리  (0) 2023.01.27
CSS 정리  (0) 2023.01.27
HTML  (0) 2023.01.27

댓글