jQuery Modal Plugin 팝업창 띄우기 예제

jQuery Modal Plugin 팝업창 띄우기 예제

소개

  • jquery-modal 플러그인 사용
  • ajax 로 다른 파일을 모달로 여러개 띄우기 가능
  • 팝업창 닫을 때 부모창으로 값 전달 가능 (jquery-modal 플러그인 소스 살짝 수정했음)
  • 창뜰때 애니메이션을 Animate.css 여기에 있는것중 마음에 드는걸로 바꿀수 있음(animation 옵션)

modal.js

(function($) {
    $.popup = function(opt) {
        $.ajax({
            url: opt.url,
            data: opt.data,
            dataType: 'html',
            success: function(html) {
                $("<div class='modal_popup'>" + html + '</div>')
                    .appendTo('body')
                    .modal({
                        escapeClose: false,
                        clickClose: false,
                        closeExisting: false
                    })
                    // 창뜰때 애니메이션 : jackInTheBox
                    .addClass('animated faster')
                    .addClass(opt.animation || 'jackInTheBox')
                    .on($.modal.CLOSE, function(event, modal) {
                        if (opt.close) opt.close(modal.result);

                        modal.elm.remove();
                    });
            },
            error: function(res) {
                if (opt.error) opt.error(res.responseText);
                else {
                    alert('error');
                }
                throw 'popup_error';
            }
        });
    };
})(jQuery);

사용법은 대충 요렇게.

$.popup({
    url: '모달창 띄울 url',
    // 모달창 호출할때 넘길 파라메터들
    data: {
        param_name1: value_1,
        param_name2: value_2
    },
    //animation : "bounce",
    close: function(result) {
        // 모달창에서 넘어온 값
        console.log(result);
    }
});

사용하기

사용하기 위해서 jquery, jquery.modal.js, jquery.modal.css, animate.min.css 이 필요하다.

<link rel="stylesheet" href="//cdn.jsdelivr.net/gh/stove99/jquery-modal-sample@v1.4/css/animate.min.css" />
<link rel="stylesheet" href="//cdn.jsdelivr.net/gh/stove99/jquery-modal-sample@v1.4/css/jquery.modal.css" />

<script src="//cdn.jsdelivr.net/gh/stove99/jquery-modal-sample@v1.4/js/jquery.modal.js"></script>

<script src="//cdn.jsdelivr.net/gh/stove99/jquery-modal-sample@v1.4/js/modal.js"></script>

샘플

sample.html

<button id="btn" type="button" class="btn btn-primary btn-lg">팝업</button>

<script>
    $('#btn').click(function(event) {
        event.preventDefault();
        this.blur();

        $.popup({
            url: './modal1.html',
            close: function(result) {
                console.log(result);
            }
        });
    });
</script>

modal1.html

<div id="test_page">
    <style>
        #test_page p {
            width: 900px;
        }
    </style>

    <p>
        Lorem, ipsum dolor sit amet consectetur adipisicing elit. Sint nisi voluptatem iusto beatae sequi ex quam tempora laboriosam facere, facilis nulla nostrum impedit ducimus, porro quasi quos, itaque optio corporis.
    </p>

    <div class="text-center">
        <button id="close_btn" type="button" class="btn btn-danger btn-lg">닫기</button>
    </div>

    <script>
        var base = $('#test_page').parents('.modal_popup');

        $('#close_btn', base).on('click', function() {
            // 창 닫을때 부모창으로 값 넘기기
            $.modal.getCurrent().close({ x: '333333' });
        });
    </script>
</div>

결과물

사이트

  • github
  • git clone https://github.com/stove99/jquery-modal-sample.git