본문 바로가기

HTML/jQuery 기초

[jQuery] 노드 추가, 수정, 삭제, 이동 실습

여태까지 배웠던 노드에서 할 수 있는 이벤트를 활용하여 실습을 해본다.

 

1. 처음에 입력 항목을 초기화해야한다.

예를 들어 ul.menu나 ul.menu li, input text에 id : #menuName를 초기화 한다.

 

2. 그리고 각각의 함수를 작성한다. 아무거나 변경할 수 없기때문에 처음에 해당 노드를 선택하는 이벤트가 존재해야한다. 노드를 선택하는 함수를 작성한다.

setfunction setSelectMenu(menuObj) {
            var $select = $(menuObj);
            // 이전에 선택한 메뉴에 대해 "select" 클래스 제거
            if ($selectedMenu != null) {
                $selectedMenu.removeClass("select");
            }

            // 신규로 선택한 메뉴에 대해 "select" 클래스 추가
            $select.addClass("select");
            $selectedMenu = $select;
        }

 

3. 선택함수를 이용하여 각각의 이벤트를 작성한다.

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>node operation</title>
    <script src="../js/jquery-3.5.1.min.js"></script>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <style>
        body {
            font-size: 9pt;
            font-family: "굴림";
        }

        ul.menu {
            padding: 10px;
            list-style: none;
            border: 1px #000 solid;
        }

        ul.menu li {
            border: 2px #eeeeee solid;
            margin: 10px;
        }

        li.select {
            background-color: #ccc;
        }
    </style>
    <script>

        var $menu = null;
        var $menuItem = null;
        var $menuName = null;
        var $selectedMenu = null;

        $(document).ready(function () {
            initialize();

            $("#add").click(function () {
                addMenu();
            });

            $("#update").click(function () {
                updateMenu();
            });

            $("#remove").click(function () {
                removeMenu();
            });

            $("#up").click(function () {
                moveUpMenu();
            });

            $("#down").click(function () {
                moveDownMenu();
            });
        });

        // 입력 항목 초기화
        function initialize() {
            $menu = $("ul.menu");
            $menuItem = $("ul.menu li");
            $menuName = $("#menuName");
        }

        function setSelectMenu(menuObj) {
            var $select = $(menuObj);
            // 이전에 선택한 메뉴에 대해 "select" 클래스 제거
            if ($selectedMenu != null) {
                $selectedMenu.removeClass("select");
            }

            // 신규로 선택한 메뉴에 대해 "select" 클래스 추가
            $select.addClass("select");
            $selectedMenu = $select;
        }

        function addMenu() { 
            var menuName = $menuName.val();
            var $newMenuItem = $("<li>"+menuName+"</li>");
            $menu.append($newMenuItem);

            $newMenuItem.click(function(){
                console.log("클릭 메뉴 index = ", $(this).index());
                setSelectMenu(this);
            });
        }

        function updateMenu() {
            if($selectedMenu == null){
                alert("메뉴를 선택하세요.");
            }else {
                var menuName = $menuName.val();
                $selectedMenu.html(menuName);
            }
         }

         function removeMenu(){
             if ($selectedMenu == null){
                 alert("메뉴를 선택하세요.");
             } else{
                 $selectedMenu.remove();
                 $selectedMenu = null;
             }
         }

        function moveUpMenu() {
            if ($selectedMenu == null){
                alert("메뉴를 선택하세요.");
            } else{
                var $prevMenu = $selectedMenu.prev();
                $prevMenu.before($selectedMenu);
            }
         }

        function moveDownMenu() { 
            if ($selectedMenu == null){
                alert("메뉴를 선택하세요.");
            } else{
                var $nextMenu = $selectedMenu.next();
                $nextMenu.after($selectedMenu);
            }
        }
    </script>
</head>

<body>
    <div>
        <input type="text" id="menuName">
        <button id="add">추가</button>
        <button id="update">수정</button>
        <button id="remove">삭제</button>
        <button id="up">UP</button>
        <button id="down">DOWN</button>
    </div>

    <ul class="menu">
        <!-- 메뉴 추가-->
    </ul>
</body>

</html>

 

728x90
반응형

'HTML > jQuery 기초' 카테고리의 다른 글

[jQuery] 해당 스타일 jQuery를 이용하여 변경하기  (0) 2020.08.04
[jQuery] 노드 수정하기  (0) 2020.08.04
[jQuery] 노드 삭제하기  (0) 2020.08.04
[jQuery] 노드 움직이기  (0) 2020.08.04
[jQuery] 노드 추가하기  (0) 2020.08.03