테스트 사이트 - 개발 중인 베타 버전입니다

jquery loaded 커스텀 함수

· 7개월 전 · 782

$("div.section").ready()같은 함수가 필요해서 만들었습니다. 비동기로 dom에 삽입될때도 작동합니다.

[code]

$.fn.loaded = function(node_selector,callback_func,option){
    var loaded = [];
    // 감시 대상 요소 선택
    $(this).each(function (i,e) {

        var $target = $(e);
        var targetNode = $target[0];
        var added = [];

        if (!node_selector instanceof jQuery){
            node_selector = $(node_selector);
        }

        var callback_excute = function (index,elem) {
            // if(elem.weaver_loaded==true){
            //     return false;
            // }
            if(loaded.includes(elem)){
                return false;
            }
            loaded.push(elem);
            // elem.weaver_loaded=true;
            callback_func.call(elem,index,elem);
        }

        $(node_selector,$target).each(function (i,e) {

            callback_excute(i,e)
        })

        var config = { childList: true, subtree: true };


        var observer = new MutationObserver(function(mutationsList, observer) {
            for(var mutation of mutationsList) {

                if (mutation.type === 'childList') {

                    $.each(mutation.addedNodes,function (j,k){
                        var $node ;

                        if($(k).is(node_selector)){
                            $node = $(k);

                            callback_excute(j,$node[0])

                        }else{
                            $(node_selector,$(k)).each(function (x,y) {

                                callback_excute(x,y)
                            });
                        }

                    })


                }
            }
        });
        observer.observe(targetNode, config);
    })
};

 

// 사용법

$("div.section").loaded(function(i,e){

    $(this).html('test');

}}

[/code]

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

게시글 목록

번호 제목
18200
18195
18193
18181
18179
18173
18170
18164
18158
18155
18152
18151
18150
18140
18139
18138
18131
18130
18120
18119
18118
18117
18116
18111
18110
18108
18107
18106
18100
18090