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

jquery loaded 커스텀 함수

· 7개월 전 · 792

$("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]

댓글 작성

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

로그인하기

게시글 목록

번호 제목
17927
17926
17922
17921
17915
17910
17907
17892
17888
17879
17878
17874
17873
17872
17871
17870
17869
17868
17866
17865
17864
17863
17862
17859
17856
17845
17835
17834
17826
17823