[jQuery] 위로 롤링되는 이미지
어제 작성했던 [JQuery] 위로 롤링되는 코드 를 약간 수정한 것이다. 스크립트 코드를 jQuery Plugin 형식으로 변경한 것이다. $.fn 으로 시작되는 코드를 봤을 때 ‘저건 뭔가?’ 이렇게 생각을 했는데 막상 사용해보니까 상당히 직관적이고 편한 방법이라는 생각이 들기 시작했다. 앞으로는 이런 식으로 작업을 해야겠다는 생각도 들었는데.. 어찌보면 class와 비슷한 개념이라 생소했는데 사용해보니까 모른척 넘어가야할 대상은 아닌 것 같다는 생각이 들었다. 아래는 수정된 코드이다.
<script>
$.fn.topRolling = function(option)
{
    var $sct = this.find("li");
    var height = this.height();
    var count = $sct.size();
    var interval = null;
    // 기본 설정값
    var settings = $.extend({
        interval: 5000,
        duration: 800
    }, option);
    if(count < 2)
        return;
    if(count > 1)
        interval = setInterval(top_rolling, settings.interval);
    $sct.hover(
        function() {
            if(interval != null)
                clearInterval(interval);
        },
        function() {
            if(interval != null)
                clearInterval(interval);
            if(count > 1)
                interval = setInterval(top_rolling, settings.interval);
        }
    );
    function top_rolling() {
        $sct.each(function(index) {
            if($(this).is(":visible")) {
                o_idx = index;
                return false;
            }
        });
        $sct.eq(o_idx).animate(
            { top: "-="+height+"px" }, settings.duration,
            function() {
                $(this).css("display", "none").css("top", height+"px");
            }
        );
        c_idx = (o_idx + 1) % count;
        $sct.eq(c_idx).css("display", "block").animate(
            { top: "-="+height+"px" }, settings.duration,
            function() {                
                o_idx = c_idx;
            }
        );
    }
}
$(function() {
    $("ul").topRolling();
    // 설정값을 변경하려면 아래처럼 사용
    //$(ul).topRolling({ interval: 5000, duration: 800 });
});
</script>실행은 위 코드의 마지막 부분에 $(“ul”).topRolling(); 처럼 입력해 주면 된다. jQuery 플러그인 만드는 것이 어렵다고 생각했는데 위와 같은 방법으로 하면 간단한 플러그인은 만들 수 있겠다는 생각이 든다. 근데 어떤 플러그인을 만들어야 할지는.. 아직 모르겠다.
참고글 : http://learn.jquery.com/plugins/basic-plugin-creation/