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

팝업으로 슬릭 슬라이더 오토슬라이드 멈춤 질문입니다! 채택완료

와로 4년 전 조회 3,925

안녕하세요 고수님들 ㅠㅠ

 

제가 팝업 슬라이드를 코딩을 쳤습니다

 

다만, 팝업을 닫았을 때 오토슬라이드가 정지되어야 하는데 어떻게 하는지 모르겠네요...

 

</p>

<p>function close_pop(flag){</p>

<p>    $(".por-popup").hide();</p>

<p>};</p>

<p> </p>

<p>$('.pop-bg').click(function(){</p>

<p>    $('.popup-slide-1').slick('slickPause');</p>

<p> </p>

<p>});</p>

<p>

 </p>

<p>$(function(){</p>

<p>    $('#por-popup-button1').click(function(){</p>

<p>        $('.por-popup-1').show();</p>

<p>        $('.popup-slide-1').slick({</p>

<p>            slide: 'div',        //슬라이드 되어야 할 태그 ex) div, li </p>

<p>            infinite : false,     //무한 반복 옵션     </p>

<p>            slidesToShow : 1,        // 한 화면에 보여질 컨텐츠 개수</p>

<p>            slidesToScroll : 1,        //스크롤 한번에 움직일 컨텐츠 개수</p>

<p>            speed : 100,     // 다음 버튼 누르고 다음 화면 뜨는데까지 걸리는 시간(ms)</p>

<p>            arrows : true,         // 옆으로 이동하는 화살표 표시 여부</p>

<p>            autoplay : true,            // 자동 스크롤 사용 여부</p>

<p>            autoplaySpeed : 5000,         // 자동 스크롤 시 다음으로 넘어가는데 걸리는 시간 (ms)</p>

<p>            pauseOnHover : true,        // 슬라이드 이동    시 마우스 호버하면 슬라이더 멈추게 설정</p>

<p>            vertical : false,        // 세로 방향 슬라이드 옵션</p>

<p>            draggable : true,     //드래그 가능 여부 </p>

<p>            dots : true,        // 스크롤바 아래 점으로 페이지네이션 여부</p>

<p>            dotsClass : "custom_paging",    //아래 나오는 페이지네이션(점) css class 지정</p>

<p>            customPaging: function (slider, i) {</p>

<p>            //FYI just have a look at the object to find available information</p>

<p>            //press f12 to access the console in most browsers</p>

<p>            //you could also debug or look in the source</p>

<p>            console.log(slider);</p>

<p>            return  (i + 1) + '/' + slider.slideCount;</p>

<p>        }</p>

<p>        });</p>

<p>    });</p>

<p>});</p>

<p> </p>

<p>

 

이런식으로 팝업 슬라이드가 7개가 있습니다 ㅠㅠ

 

그래서 위 코드를 반복해서 7개 쳤는데요..

 

1. 팝업 닫기를 누르면! 즉, 

$('.pop-bg').click(function(){

    $('.popup-slide-1').slick('slickPause');

 

}); 이 부분이 작동하지를 않습니다.

 

그리고 팝업을 열고 닫을때마다 개발자도구에서 오류가 났다고 엄청 뜹니다 ㅠㅠ

 

2. 자바스크립트를 엄청 반복해서 쳤는데.. 혹시 for문같은걸 이용하여서 간단하게 만들수있나요?

 

</p>

<p>// 정지 감춤 재실행 등</p>

<p> </p>

<p>function close_pop(flag){</p>

<p>    $(".por-popup").hide();</p>

<p> </p>

<p>};</p>

<p> </p>

<p>$('.pop-bg').click(function(){</p>

<p>    $('.popup-slide-1').slick('slickPause');</p>

<p>    $('.popup-slide-2').slick('slickPause');</p>

<p>    $('.popup-slide-3').slick('slickPause');</p>

<p>    $('.popup-slide-4').slick('slickPause');</p>

<p>    $('.popup-slide-5').slick('slickPause');</p>

<p>    $('.popup-slide-6').slick('slickPause');</p>

<p>});</p>

<p>

 </p>

<p>$(function(){</p>

<p>    $('#por-popup-button1').click(function(){</p>

<p>        $('.por-popup-1').show();</p>

<p>        $('.popup-slide-1').slick({</p>

<p>            slide: 'div',        //슬라이드 되어야 할 태그 ex) div, li </p>

<p>            infinite : false,     //무한 반복 옵션     </p>

<p>            slidesToShow : 1,        // 한 화면에 보여질 컨텐츠 개수</p>

<p>            slidesToScroll : 1,        //스크롤 한번에 움직일 컨텐츠 개수</p>

<p>            speed : 100,     // 다음 버튼 누르고 다음 화면 뜨는데까지 걸리는 시간(ms)</p>

<p>            arrows : true,         // 옆으로 이동하는 화살표 표시 여부</p>

<p>            autoplay : true,            // 자동 스크롤 사용 여부</p>

<p>            autoplaySpeed : 5000,         // 자동 스크롤 시 다음으로 넘어가는데 걸리는 시간 (ms)</p>

<p>            pauseOnHover : true,        // 슬라이드 이동    시 마우스 호버하면 슬라이더 멈추게 설정</p>

<p>            vertical : false,        // 세로 방향 슬라이드 옵션</p>

<p>            draggable : true,     //드래그 가능 여부 </p>

<p>            dots : true,        // 스크롤바 아래 점으로 페이지네이션 여부</p>

<p>            dotsClass : "custom_paging",    //아래 나오는 페이지네이션(점) css class 지정</p>

<p>            customPaging: function (slider, i) {</p>

<p>            //FYI just have a look at the object to find available information</p>

<p>            //press f12 to access the console in most browsers</p>

<p>            //you could also debug or look in the source</p>

<p>            console.log(slider);</p>

<p>            return  (i + 1) + '/' + slider.slideCount;</p>

<p>        }</p>

<p>        });</p>

<p>    });</p>

<p>});</p>

<p>





 </p>

<p>$(function(){</p>

<p>    $('#por-popup-button2').click(function(){</p>

<p>        $('.por-popup-2').show();</p>

<p>        $('.popup-slide-2').slick({</p>

<p>            slide: 'div',        //슬라이드 되어야 할 태그 ex) div, li </p>

<p>            infinite : false,     //무한 반복 옵션     </p>

<p>            slidesToShow : 1,        // 한 화면에 보여질 컨텐츠 개수</p>

<p>            slidesToScroll : 1,        //스크롤 한번에 움직일 컨텐츠 개수</p>

<p>            speed : 100,     // 다음 버튼 누르고 다음 화면 뜨는데까지 걸리는 시간(ms)</p>

<p>            arrows : true,         // 옆으로 이동하는 화살표 표시 여부</p>

<p>            autoplay : true,            // 자동 스크롤 사용 여부</p>

<p>            autoplaySpeed : 5000,         // 자동 스크롤 시 다음으로 넘어가는데 걸리는 시간 (ms)</p>

<p>            pauseOnHover : true,        // 슬라이드 이동    시 마우스 호버하면 슬라이더 멈추게 설정</p>

<p>            vertical : false,        // 세로 방향 슬라이드 옵션</p>

<p>            draggable : true,     //드래그 가능 여부 </p>

<p>            dots : true,        // 스크롤바 아래 점으로 페이지네이션 여부</p>

<p>            dotsClass : "custom_paging",    //아래 나오는 페이지네이션(점) css class 지정</p>

<p>            customPaging: function (slider, i) {</p>

<p>            //FYI just have a look at the object to find available information</p>

<p>            //press f12 to access the console in most browsers</p>

<p>            //you could also debug or look in the source</p>

<p>            console.log(slider);</p>

<p>            return  (i + 1) + '/' + slider.slideCount;</p>

<p>        }</p>

<p>        });</p>

<p>    });</p>

<p> </p>

<p>});</p>

<p>



 </p>

<p>$(function(){</p>

<p>    $('#por-popup-button3').click(function(){</p>

<p>        $('.por-popup-3').show();</p>

<p>        $('.popup-slide-3').slick({</p>

<p>            slide: 'div',        //슬라이드 되어야 할 태그 ex) div, li </p>

<p>            infinite : false,     //무한 반복 옵션     </p>

<p>            slidesToShow : 1,        // 한 화면에 보여질 컨텐츠 개수</p>

<p>            slidesToScroll : 1,        //스크롤 한번에 움직일 컨텐츠 개수</p>

<p>            speed : 100,     // 다음 버튼 누르고 다음 화면 뜨는데까지 걸리는 시간(ms)</p>

<p>            arrows : true,         // 옆으로 이동하는 화살표 표시 여부</p>

<p>            autoplay : true,            // 자동 스크롤 사용 여부</p>

<p>            autoplaySpeed : 5000,         // 자동 스크롤 시 다음으로 넘어가는데 걸리는 시간 (ms)</p>

<p>            pauseOnHover : true,        // 슬라이드 이동    시 마우스 호버하면 슬라이더 멈추게 설정</p>

<p>            vertical : false,        // 세로 방향 슬라이드 옵션</p>

<p>            draggable : true,     //드래그 가능 여부 </p>

<p>            dots : true,        // 스크롤바 아래 점으로 페이지네이션 여부</p>

<p>            dotsClass : "custom_paging",    //아래 나오는 페이지네이션(점) css class 지정</p>

<p>            customPaging: function (slider, i) {</p>

<p>            //FYI just have a look at the object to find available information</p>

<p>            //press f12 to access the console in most browsers</p>

<p>            //you could also debug or look in the source</p>

<p>            console.log(slider);</p>

<p>            return  (i + 1) + '/' + slider.slideCount;</p>

<p>        }</p>

<p>        });</p>

<p>    });</p>

<p> </p>

<p>});</p>

<p>





 </p>

<p>$(function(){</p>

<p>    $('#por-popup-button4').click(function(){</p>

<p>        $('.por-popup-4').show();</p>

<p>        $('.popup-slide-4').slick({</p>

<p>            slide: 'div',        //슬라이드 되어야 할 태그 ex) div, li </p>

<p>            infinite : false,     //무한 반복 옵션     </p>

<p>            slidesToShow : 1,        // 한 화면에 보여질 컨텐츠 개수</p>

<p>            slidesToScroll : 1,        //스크롤 한번에 움직일 컨텐츠 개수</p>

<p>            speed : 100,     // 다음 버튼 누르고 다음 화면 뜨는데까지 걸리는 시간(ms)</p>

<p>            arrows : true,         // 옆으로 이동하는 화살표 표시 여부</p>

<p>            autoplay : true,            // 자동 스크롤 사용 여부</p>

<p>            autoplaySpeed : 5000,         // 자동 스크롤 시 다음으로 넘어가는데 걸리는 시간 (ms)</p>

<p>            pauseOnHover : true,        // 슬라이드 이동    시 마우스 호버하면 슬라이더 멈추게 설정</p>

<p>            vertical : false,        // 세로 방향 슬라이드 옵션</p>

<p>            draggable : true,     //드래그 가능 여부 </p>

<p>            dots : true,        // 스크롤바 아래 점으로 페이지네이션 여부</p>

<p>            dotsClass : "custom_paging",    //아래 나오는 페이지네이션(점) css class 지정</p>

<p>            customPaging: function (slider, i) {</p>

<p>            //FYI just have a look at the object to find available information</p>

<p>            //press f12 to access the console in most browsers</p>

<p>            //you could also debug or look in the source</p>

<p>            console.log(slider);</p>

<p>            return  (i + 1) + '/' + slider.slideCount;</p>

<p>        }</p>

<p>        });</p>

<p>    });</p>

<p> </p>

<p>});</p>

<p> </p>

<p>$(function(){</p>

<p>    $('#por-popup-button5').click(function(){</p>

<p>        $('.por-popup-5').show();</p>

<p>        $('.popup-slide-5').slick({</p>

<p>            slide: 'div',        //슬라이드 되어야 할 태그 ex) div, li </p>

<p>            infinite : false,     //무한 반복 옵션     </p>

<p>            slidesToShow : 1,        // 한 화면에 보여질 컨텐츠 개수</p>

<p>            slidesToScroll : 1,        //스크롤 한번에 움직일 컨텐츠 개수</p>

<p>            speed : 100,     // 다음 버튼 누르고 다음 화면 뜨는데까지 걸리는 시간(ms)</p>

<p>            arrows : true,         // 옆으로 이동하는 화살표 표시 여부</p>

<p>            autoplay : true,            // 자동 스크롤 사용 여부</p>

<p>            autoplaySpeed : 5000,         // 자동 스크롤 시 다음으로 넘어가는데 걸리는 시간 (ms)</p>

<p>            pauseOnHover : true,        // 슬라이드 이동    시 마우스 호버하면 슬라이더 멈추게 설정</p>

<p>            vertical : false,        // 세로 방향 슬라이드 옵션</p>

<p>            draggable : true,     //드래그 가능 여부 </p>

<p>            dots : true,        // 스크롤바 아래 점으로 페이지네이션 여부</p>

<p>            dotsClass : "custom_paging",    //아래 나오는 페이지네이션(점) css class 지정</p>

<p>            customPaging: function (slider, i) {</p>

<p>            //FYI just have a look at the object to find available information</p>

<p>            //press f12 to access the console in most browsers</p>

<p>            //you could also debug or look in the source</p>

<p>            console.log(slider);</p>

<p>            return  (i + 1) + '/' + slider.slideCount;</p>

<p>        }</p>

<p>        });</p>

<p>    });</p>

<p>});</p>

<p>

 </p>

<p>$(function(){</p>

<p>    $('#por-popup-button6').click(function(){</p>

<p>        $('.por-popup-6').show();</p>

<p>        $('.popup-slide-6').slick({</p>

<p>            slide: 'div',        //슬라이드 되어야 할 태그 ex) div, li </p>

<p>            infinite : false,     //무한 반복 옵션     </p>

<p>            slidesToShow : 1,        // 한 화면에 보여질 컨텐츠 개수</p>

<p>            slidesToScroll : 1,        //스크롤 한번에 움직일 컨텐츠 개수</p>

<p>            speed : 100,     // 다음 버튼 누르고 다음 화면 뜨는데까지 걸리는 시간(ms)</p>

<p>            arrows : true,         // 옆으로 이동하는 화살표 표시 여부</p>

<p>            autoplay : true,            // 자동 스크롤 사용 여부</p>

<p>            autoplaySpeed : 5000,         // 자동 스크롤 시 다음으로 넘어가는데 걸리는 시간 (ms)</p>

<p>            pauseOnHover : true,        // 슬라이드 이동    시 마우스 호버하면 슬라이더 멈추게 설정</p>

<p>            vertical : false,        // 세로 방향 슬라이드 옵션</p>

<p>            draggable : true,     //드래그 가능 여부 </p>

<p>            dots : true,        // 스크롤바 아래 점으로 페이지네이션 여부</p>

<p>            dotsClass : "custom_paging",    //아래 나오는 페이지네이션(점) css class 지정</p>

<p>            customPaging: function (slider, i) {</p>

<p>            //FYI just have a look at the object to find available information</p>

<p>            //press f12 to access the console in most browsers</p>

<p>            //you could also debug or look in the source</p>

<p>            console.log(slider);</p>

<p>            return  (i + 1) + '/' + slider.slideCount;</p>

<p>        }</p>

<p>        });</p>

<p>    });</p>

<p>});</p>

<p> </p>

<p>

 

 

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

답변 1개

채택된 답변
+20 포인트
Big1
4년 전

여러개 컨트롤해야하니까 

클래스와 data로 관리하고요

slick 이 한번 initialize 되었을때 다시 initialize 하면 에러나더라고요

destroy 하고 다시 실행해야겠지만

그렇게 되면 슬라이드 순번이 초기화 되어서

배열 변수 하나 잡고 

slick init 할때 배열에 넣어서 컨트롤

 

</p>

<p><div class="por-popup" data-popup="1" style="display: none;">

    <div class="slider popup-slide">

        <div><h3>1-1</h3></div>

        <div><h3>1-2</h3></div>

        <div><h3>1-3</h3></div>

        <div><h3>1-4</h3></div>

        <div><h3>1-5</h3></div>

        <div><h3>1-6</h3></div>

    </div>

    <div><button type="button" class="por-close">Close</button></div>

</div>

<div class="por-popup" data-popup="2" style="display: none;">

    <div class="slider popup-slide">

        <div><h3>2-1</h3></div>

        <div><h3>2-2</h3></div>

        <div><h3>2-3</h3></div>

        <div><h3>2-4</h3></div>

        <div><h3>2-5</h3></div>

        <div><h3>2-6</h3></div>

    </div>

    <div><button type="button" class="por-close">Close</button></div>

</div>

<div class="por-popup" data-popup="3" style="display: none;">

    <div class="slider popup-slide">

        <div><h3>3-1</h3></div>

        <div><h3>3-2</h3></div>

        <div><h3>3-3</h3></div>

        <div><h3>3-4</h3></div>

        <div><h3>3-5</h3></div>

        <div><h3>3-6</h3></div>

    </div>

    <div><button type="button" class="por-close">Close</button></div>

</div>

<div class="por-popup" data-popup="4" style="display: none;">

    <div class="slider popup-slide">

        <div><h3>4-1</h3></div>

        <div><h3>4-2</h3></div>

        <div><h3>4-3</h3></div>

        <div><h3>4-4</h3></div>

        <div><h3>4-5</h3></div>

        <div><h3>4-6</h3></div>

    </div>

    <div><button type="button" class="por-close">Close</button></div>

</div></p>

<p>





<button type="button" class="por-popup-button" data-index="1">1</button>

<button type="button" class="por-popup-button" data-index="2">2</button>

<button type="button" class="por-popup-button" data-index="3">3</button>

<button type="button" class="por-popup-button" data-index="4">4</button>

<button type="button" class="por-popup-button" data-index="5">5 없음</button></p>

<p><script>

var _slick = [];

$(function(){

    $('.por-popup-button').on('click', function(){

        var $this = $(this),

            index = $this.data('index') || '',

            $popup = $('.por-popup[data-popup="' + index + '"]'),

            $slide = $popup.find('.popup-slide');</p>

<p>        if (!$slide) return;</p>

<p>        $popup.show();</p>

<p>        if (_slick[index]) {

            _slick[index].slick('slickPlay');

        } else {

            _slick[index] = $slide.slick({

                slide: 'div',        //슬라이드 되어야 할 태그 ex) div, li

                infinite : false,     //무한 반복 옵션

                slidesToShow : 1,        // 한 화면에 보여질 컨텐츠 개수

                slidesToScroll : 1,        //스크롤 한번에 움직일 컨텐츠 개수

                speed : 100,     // 다음 버튼 누르고 다음 화면 뜨는데까지 걸리는 시간(ms)

                arrows : true,         // 옆으로 이동하는 화살표 표시 여부

                autoplay : true,            // 자동 스크롤 사용 여부

                autoplaySpeed : 1000,         // 자동 스크롤 시 다음으로 넘어가는데 걸리는 시간 (ms)

                pauseOnHover : true,        // 슬라이드 이동    시 마우스 호버하면 슬라이더 멈추게 설정

                vertical : false,        // 세로 방향 슬라이드 옵션

                draggable : true,     //드래그 가능 여부

                dots : true,        // 스크롤바 아래 점으로 페이지네이션 여부

                dotsClass : "custom_paging",    //아래 나오는 페이지네이션(점) css class 지정

                customPaging: function (slider, i) {

                    //FYI just have a look at the object to find available information

                    //press f12 to access the console in most browsers

                    //you could also debug or look in the source

                    //console.log(slider);

                    return  (i + 1) + '/' + slider.slideCount;

                }

            });

        }

    });</p>

<p>    $('.por-close').on('click', function() {

        var $this = $(this),

            $popup = $this.closest('.por-popup'),

            $slide = $popup.find('.popup-slide'),

            index = $popup.data('popup');</p>

<p>        _slick[index].slick('slickPause');

        $popup.hide();

    });

});

</script></p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

와로
4년 전
아직 초보라 모르는 것들이 많지만 공부가 많이 될거같습니다 감사합니다 ㅠㅠ

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

답변을 작성하려면 로그인이 필요합니다.

로그인