ajax 로 호출하여 리턴된 데이터를 처리할 때 화면 도시를 위해서 html 에 바인딩 하는 경우가 많다.

 

아래의 예시와 같은 경우

 

var callBackAjax = function(data){

var html = "<div>" + data.tVal +"</div>"

/// .... 중략

}

 

이는 js 소스에 대한 복잡도 증가 및 가독성을 떨어트리게 된다.

이를 극복하기 위해 jquery 의 tmpl 을 사용하는 경우도 있다.

 

필자가 제작한것은 tmpl 과 유사한 간단한 jquery 플러그인이다.

(function( $ ) {

    $.fn.generateHtml = function(data) {

    var html = $(this).html();

var array = html.match(/@{(\w+[.]?)+}/g);

if(array == null){

return html;

}

for(var i = 0 , len = array.length ; i < len ; i++){

html = html.replace(array[i], findValue(array[i], data));

}

return html;

    },

    findValue = function(key, data){

key = key.replace(/(@{|})/g, '');

return reclusive(key.split(".") , data);

},

reclusive  = function(keys, data){

var result = data[keys[0]];

if(result === undefined || result === null){

return '';

}

if(keys.length > 1){

return reclusive( keys.slice(1), result);

}

return result;

};

}(jQuery));

 

 

 

사용법 예시

 

 // 사용할 HTML 의 구조를 만들고 ID 를 부여한다.

 // @{데이터의 key} 로 사용할 데이터를 명시한다.

<script id="templateTag" type="text">
    <div>
         <div> @{tVal} <div>
         <div> @{pVal} <div>
         <div> @{oee.tVal} <div>
         <div> @{oee.pVal} <div>
    </div>
</script>

 

<script>

$(function(){
 var testData = {tVal : 100, oee : {tVal:"233", pVal : "555"}} // 예시 데이터
 // pVal 값이 없는 경우는 공백입력됨
console.log($("#templateTag").generateHtml(testData)); 

})
</script>

 

실행 결과

    <div>
         <div> 100 <div>
         <div>  <div>
         <div> 233 <div>
         <div> 555 <div>
    </div>

 

 

 

 

'IT > jquery' 카테고리의 다른 글

누석 시간 바 차트 컴포넌트  (0) 2016.07.25
jQuery 플러그인 화면 도시여부 체크  (0) 2016.01.20
[제이쿼리(jQuery)] lesson 6  (0) 2014.12.16
[제이쿼리(jQuery)] lesson 5  (0) 2014.11.24
[제이쿼리(jQuery)] lesson 4  (0) 2014.11.24

selector 된 요소가 주어진 부모창(스크롤을 가진)에서 보이는지 안보이는지에 대한 여부를 체크하는

간단한 플러그인 이다.(해당 플로그인은 Y 축만 체크한다 필요하면 X축 계산만 추가하면 된다)



/**

 * 현재 해당 요소의 도시여부를 체크하는 function

 * @param parent 

 */

(function( $ ) {

    $.fn.visible = function(parent) {

var $parent = $(parent);

var bHeight = $parent.height();

var bTop = $parent.offset().top;

var top = $(this).offset().top;

if(top >= bTop && top < (bTop + bHeight)){

return true;

}

        return false;

    };

}(jQuery));


사용예시>

$("#Test").visible(".bottom");



스크롤이 되는 영역안에서 브라우져 상에 사용자에게 보여지는 영역안에 있지를 체크한다.(Y축만 고려함)

스크롤을 가진 부모에 대한 셀렉터를 파라미터를 받지말고, 부모중 스크롤을 가진 요소를 찾아서 처리해도 된다.


ps> x 축 추가는 간단한 응용이기 때문에 생략한다.

'IT > jquery' 카테고리의 다른 글

누석 시간 바 차트 컴포넌트  (0) 2016.07.25
JSON 바인딩하여 HTML 만들기  (0) 2016.01.25
[제이쿼리(jQuery)] lesson 6  (0) 2014.12.16
[제이쿼리(jQuery)] lesson 5  (0) 2014.11.24
[제이쿼리(jQuery)] lesson 4  (0) 2014.11.24

+ Recent posts