Skip to content

CHICPRO

  • Life Log
  • Cycling Log
  • Photo Log
    • Portrait
    • Landscape
    • Flower
    • Etc
  • Coding Log
  • Information

jqTree 를 이용한 트리메뉴 예제

2015-10-19 by 편리

해보고 싶은 건 일단 해보는 요즘이다. 트리메뉴를 만들어볼까? 하는 생각에 일단 시작을 했는데.. 이게 생각만큼 쉽지가 않다. 일단 트리메뉴를 출력하고 간단하게 추가, 수정, 삭제 정도만 되도록 해봤는데.. 물론 더 좋은 플러그인들이 있겠지만 이렇게 직접 해보는 게 구조를 이해하는 데는 좋기 때문에 나만의 코드로 코딩을 해봤다.

데모 : http://codepub.net/jquery/jqtree/jqtree.html

jqTree : https://mbraak.github.io/jqTree/
jqTreeContextMenu : http://hackersome.com/p/DavidUv/jqTreeContextMenu

아래는 jqtree.html 파일의 코드이다.

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jqTree</title>
<link rel="stylesheet" href="./jqtree.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="./tree.jquery.js"></script>
<script src="./jqTreeContextMenu.js"></script>
</head>
<body>

<div id="tree1"></div>

<ul id="ContextMenu" class="dropdown-menu" role="menu" aria-labelledby="dLabel">
    <li class="add"><a href="#add"><i class="icon-plus"></i> Add</a></li>
    <li class="edit"><a href="#edit"><i class="icon-edit"></i> Edit</a></li>
    <li class="divider"></li>
    <li class="delete"><a href="#delete"><i class="icon-remove"></i> Delete</a></li>
</ul>

<script>
$(function () {
    var edt_node = null;

    var data = [{
        label: "node1",
        children: [{ label: "child1" },
                   { label: "child2" }]
    },{
        label: "node2",
        children: [{ label: "child3"}]
    }, {
        label: "node3"
    }];

    var $tree = $("#tree1");

    $tree.tree({
        data: data,
        onCreateLi: function(node, $li) {
            // Add 'icon' span before title
            $li.find('.jqtree-title').before('<span class="icon"></span>');
        },
        autoOpen: true,
        usecontextmenu: true
    });

    $tree.jqTreeContextMenu($("#ContextMenu"), {
        "add": function (node) {
            $tree.tree("appendNode", { label: "new node" }, node);
            $tree.tree("openNode", node);
        },
        "edit": function (node) {
            var $edit = $("#edit_label");
            if(edt_node != node && $edit.size() > 0) {
                var $input = $edit.find("input:text");
                var label = $.trim($input.val());

                updateNodeLabel(edt_node, label);
                $edit.remove();
            }

            edt_node = node;
            var $el = $(node.element);
            $el.find("span.jqtree-title:first").after('<span id="edit_label"><input type="text" name="label" value="'+node.name+'"><button type="button" id="edit_submit">수정</button></span>').hide();
        },
        "delete": function (node) {
            $tree.tree("removeNode", node);
        }
    });

    $(document).on("click", "#edit_submit", function() {
        var $this = $(this);
        var $input = $this.siblings( "input:text");
        var label = $.trim($input.val());
        $this.siblings(".jqtree-title").show();
        $("#edit_label").remove();

        updateNodeLabel(edt_node, label);
    });

    function updateNodeLabel(node, label)
    {
        $tree.tree("updateNode", node, label);
        edt_node = null;
    }
});
</script>

</body>
</html>

소스파일 : jqtree.zip

Post navigation

Previous Post:

2015년 10월 18일 라이딩

Next Post:

그냥 달리고 싶었어

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Recent Posts

  • php 배열 연산에서 + 와 array_merge 의 차이
  • pcntl_fork 를 이용한 다중 프로세스 실행
  • 아이폰 단축어를 이용하여 주중 공휴일엔 알람 울리지 않게 하기
  • 구글 캘린더 전체일정 재동기화
  • OpenLiteSpeed 웹서버에 HTTP 인증 적용
  • OpenLiteSpeed 웹어드민 도메인 연결
  • WireGuard를 이용한 VPN 환경 구축
  • Ubuntu 22.04 서버에 OpenLiteSpeed 웹서버 세팅
  • 맥 vim 세팅
  • 우분투 시스템 터미널쉘 zsh 로 변경

Recent Comments

  • 편리 on 업무관리용 그누보드 게시판 스킨
  • 임종섭 on 업무관리용 그누보드 게시판 스킨
  • 캐논 5D 펌웨어 | Dslr 펌웨어 업그레이드 방법 82 개의 베스트 답변 on 캐논 EOS 30D 펌웨어 Ver 1.0.6 , EOS 5D 펌웨어 Ver 1.1.1
  • Top 5 캐논 5D 펌웨어 Top 89 Best Answers on 캐논 EOS 30D 펌웨어 Ver 1.0.6 , EOS 5D 펌웨어 Ver 1.1.1
  • 편리 on 워드프레스 애니메이션 gif 파일을 mp4로 변환하여 출력하기
  • 임팀장 on 워드프레스 애니메이션 gif 파일을 mp4로 변환하여 출력하기
  • 편리 on Notepad++ NppFTP 플러그인 수동 설치
  • paul-j on Notepad++ NppFTP 플러그인 수동 설치
  • YS on Windows 10 iCloud 사진 저장 폴더 변경
  • 편리 on Docker를 이용한 Centos7 + httpd + php 5.4 개발환경 구축

Meta

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org
© 2025 CHICPRO | Built using WordPress and SuperbThemes