๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Lect & Tip/javascript, jQuery

Jquery ์Šค์™€์ดํผ ์Šฌ๋ผ์ด๋” ํ”Œ๋Ÿฌ๊ทธ์ธ idangerous.swiper.js pagination ์Šคํƒ€์ผ ๋ณ€๊ฒฝํ•˜๊ธฐ

by ๋‚ฏ์„ ๊ณต๊ฐ„2019 2023. 9. 7.

๋ชฉ์ฐจ

    Jquery ์Šค์™€์ดํผ ์Šฌ๋ผ์ด๋” ํ”Œ๋Ÿฌ๊ทธ์ธ idangerous.swiper.js pagination ์Šคํƒ€์ผ ๋ณ€๊ฒฝํ•˜๊ธฐ

    ์„œ๋ก 

    ๋ชจ๋ฐ”์ผ ์›น ๊ฐœ๋ฐœ์—์„œ ์Šฌ๋ผ์ด๋“œ ๊ธฐ๋Šฅ์€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. idangerous.swiper.js ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋ชจ๋ฐ”์ผ์—์„œ ํ„ฐ์น˜ ์ œ์Šค์ฒ˜๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์Šฌ๋ผ์ด๋“œ๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ํ›Œ๋ฅญํ•œ ๋„๊ตฌ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ํŽ˜์ด์ง• ๊ธฐ๋Šฅ์€ ์ˆซ์ž๋‚˜ ๋ถˆ๋ฆฟ ํ˜•ํƒœ๋กœ๋งŒ ์ œ๊ณต๋˜์–ด, ํ…์ŠคํŠธ ๋ฌธ์žฅ์œผ๋กœ ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ํ‘œํ˜„ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

    ์ด์— ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด ํ…์ŠคํŠธ ๋ฌธ์žฅ์„ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌํ•˜๋Š” ๊ผผ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ ค ํ–ˆ์œผ๋ฉฐ, ์ฒ˜์Œ์—๋Š” ๋Œ€๋žต 6~8๊ฐœ์˜ ํŽ˜์ด์ง€๋ฅผ ํ‘œ์‹œํ•˜๋„๋ก ์„ค์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋””์ž์ด๋„ˆ์˜ ์š”์ฒญ์œผ๋กœ 10๊ฐœ์˜ ํŽ˜์ด์ง€๊ฐ€ ๋“ฑ๋ก๋˜์—ˆ์„ ๋•Œ ์ดˆ๋ฐ˜ 6๊ฐœ๋งŒ ๋ณด์ด๊ณ , ๋‚˜๋จธ์ง€๋Š” ๋‹ค์Œ ํŽ˜์ด์ง€์—์„œ ๋ณด์ด๋„๋ก ์ฒ˜๋ฆฌํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋ ค๋ฉด ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ฝ”์–ด๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋Š” ์ตœ์‹  ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ›๋Š”๋ฐ ์–ด๋ ค์›€์„ ๊ฒช์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๊ทธ๋ž˜์„œ ์ €๋Š” setInterval ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ์ง€์†์ ์œผ๋กœ ์ฒดํฌํ•˜๊ณ , swiper-pagination-switch์˜ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 6๊ฐœ (๋˜๋Š” 7๊ฐœ)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์•ž์ชฝ์—๋Š” "vpage1" ํด๋ž˜์Šค๋ฅผ ๋ถ€์—ฌํ•˜๊ณ , ๋’ค์ชฝ์—๋Š” "vPage2"๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๊ผผ์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด 2๊ฐœ์˜ ํŽ˜์ด์ง€์™€ ์œ ์‚ฌํ•œ ํšจ๊ณผ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

    var tmpNo = 0;
    $('.popupZone .swiper-slide a').each(function(index, element) {
        var tmpNo2 = tmpNo + 1;
        var tmpTxt = '<span class="popNo mobileHide">' + tmpNo2 + '</span><span class="popTxt">' + $(this).attr('title') + "</span>";
        $('.pagination5 > a:eq(' + tmpNo + ')').html(tmpTxt);
        $('.pagination5 > a').attr('href', '#link');
        tmpNo++;
    });
    
    $('.popupZoneCnt .totalCnt').text($('.pagination5 > a').length);
    
    setInterval(function() {
        checkActive(6);
    }, 200);
    
    function checkActive(e) {
        var p2end = $('.swiper-pagination-switch').length;
        $('.swiper-pagination-switch').slice(0, e).addClass('vPage1');
        $('.swiper-pagination-switch').slice(e, p2end).addClass('vPage2');
        if (parseInt($('.swiper-active-switch .popNo').text()) > e) {
            $('.vPage2').show();
            $('.vPage1').hide();
        } else {
            $('.vPage2').hide();
            $('.vPage1').show();
        }
    }

    ๋ณธ๋ฌธ

    ์ด์ œ ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. idangerous.swiper.js ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋ฐ”์ผ ์›น ํŽ˜์ด์ง€์—์„œ ๊ฐ„ํŽธํ•˜๊ฒŒ ์Šฌ๋ผ์ด๋“œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์ œ๊ณตํ•˜๋Š” ํŽ˜์ด์ง€๋„ค์ด์…˜ ๊ธฐ๋Šฅ์€ ์ˆซ์ž๋‚˜ ๋ถˆ๋ฆฟ ํ˜•ํƒœ๋กœ๋งŒ ํ‘œํ˜„๋˜์–ด, ์›ํ•˜๋Š” ํ…์ŠคํŠธ ๋ฌธ์žฅ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ ์–ด๋ ค์šด ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

    ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ธฐ๋Šฅ์„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ  ์›ํ•˜๋Š” ์Šคํƒ€์ผ๋กœ ํŽ˜์ด์ง•์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ๊ผผ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋จผ์ €, ๊ฐ ์Šฌ๋ผ์ด๋“œ ์š”์†Œ์˜ ์ž์‹์ธ <a> ํƒœ๊ทธ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€์„œ ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ์ œ๋ชฉ์„ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ…์ŠคํŠธ ๋ฌธ์žฅ์œผ๋กœ ๋œ ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    var tmpNo = 0;
    $('.popupZone .swiper-slide a').each(function(index, element) {
        var tmpNo2 = tmpNo + 1;
        var tmpTxt = '<span class="popNo mobileHide">' + tmpNo2 + '</span><span class="popTxt">' + $(this).attr('title') + "</span>";
        $('.pagination5 > a:eq(' + tmpNo + ')').html(tmpTxt);
        $('.pagination5 > a').attr('href', '#link');
        tmpNo++;
    });

    ๋˜ํ•œ, ํŽ˜์ด์ง€๋„ค์ด์…˜์˜ ์ด ๊ฐœ์ˆ˜๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    $('.popupZoneCnt .totalCnt').text($('.pagination5 > a').length);

    ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด setInterval ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ์ง€์†์ ์œผ๋กœ ์ฒดํฌํ•˜๊ณ , 6๊ฐœ ์ด์ƒ์˜ ํŽ˜์ด์ง€๊ฐ€ ํ™œ์„ฑํ™”๋˜์—ˆ์„ ๋•Œ ๋‹ค์Œ ํŽ˜์ด์ง€์˜ ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ๋ณด์ด๊ฒŒ ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ด์ „ ํŽ˜์ด์ง€์˜ ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ๋ณด์ด๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

    setInterval(function() {
        checkActive(6);
    }, 200);
    
    function checkActive(e) {
        var p2end = $('.swiper-pagination-switch').length;
        $('.swiper-pagination-switch').slice(0, e).addClass('vPage1');
        $('.swiper-pagination-switch').slice(e, p2end).addClass('vPage2');
        if (parseInt($('.swiper-active-switch .popNo').text()) > e) {
            $('.vPage2').show();
            $('.vPage1').hide();
        } else {
            $('.vPage2').hide();
            $('.vPage1').show();
        }
    }

    ๊ฒฐ๋ก 

    ์ด๋ ‡๊ฒŒํ•˜์—ฌ idangerous.swiper.js ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ํŽ˜์ด์ง€๋„ค์ด์…˜ ์Šคํƒ€์ผ์„ ํ…์ŠคํŠธ ๋ฌธ์žฅ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ , ํŽ˜์ด์ง€ ์ˆ˜์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ผผ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ฝ”์–ด๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„ ์›ํ•˜๋Š” ์Šคํƒ€์ผ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ตœ

    ์‹  ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ›์„ ๋•Œ์—๋„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    ์ƒ์„ธ ์„ค๋ช…

    ์œ„์—์„œ ์„ค๋ช…ํ•œ ์ฝ”๋“œ์™€ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ƒ์„ธํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

    ์„œ๋ก 

    • ๋ชจ๋ฐ”์ผ ์›น ๊ฐœ๋ฐœ์—์„œ ์Šฌ๋ผ์ด๋“œ ๊ธฐ๋Šฅ์˜ ์ค‘์š”์„ฑ.
    • idangerous.swiper.js ํ”Œ๋Ÿฌ๊ทธ์ธ ์†Œ๊ฐœ ๋ฐ ํŠน์ง•.

    ํ…์ŠคํŠธ ๋ฌธ์žฅ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ

    • ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์ œ๊ณตํ•˜๋Š” ํŽ˜์ด์ง€๋„ค์ด์…˜์˜ ํ•œ๊ณ„.
    • ํ…์ŠคํŠธ ๋ฌธ์žฅ์œผ๋กœ ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๊ผผ์ˆ˜ ์‚ฌ์šฉ.

    ์ฝ”๋“œ ์„ค๋ช…

    • ๊ฐ ์ฝ”๋“œ ๋ผ์ธ์˜ ์—ญํ• ๊ณผ ์ž‘๋™ ๋ฐฉ์‹์— ๋Œ€ํ•œ ์ƒ์„ธ ์„ค๋ช….

    ๊ฒฐ๋ก 

    • idangerous.swiper.js ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ™œ์šฉํ•˜์—ฌ ํ…์ŠคํŠธ ๋ฌธ์žฅ ํ˜•ํƒœ์˜ ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•.
    • ํ”Œ๋Ÿฌ๊ทธ์ธ ์ฝ”์–ด ๋ณ€๊ฒฝ์„ ํ”ผํ•˜๊ณ , ์ตœ์‹  ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์žฅ์ .

    ํฌ์ŠคํŠธ ์š”์•ฝ

    ์ด ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…์—์„œ๋Š” idangerous.swiper.js ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ฐ”์ผ ์›น ํŽ˜์ด์ง€์—์„œ ํ…์ŠคํŠธ ๋ฌธ์žฅ ํ˜•ํƒœ์˜ ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ƒ์„ธํžˆ ์„ค๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ํ…์ŠคํŠธ ๋ฌธ์žฅ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ๊ผผ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์˜€๊ณ , ํ”Œ๋Ÿฌ๊ทธ์ธ ์ฝ”์–ด๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ์›ํ•˜๋Š” ์Šคํƒ€์ผ์„ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ์‹œํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ชจ๋ฐ”์ผ ์›น ํŽ˜์ด์ง€์˜ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€