필터링 UI 연동 무한스크롤 스크립트 이벤트 > 프론트

본문 바로가기
사이트 내 전체검색

프론트

JavaScript 필터링 UI 연동 무한스크롤 스크립트 이벤트

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 1,408회 작성일 24-04-30 16:54

본문

$(function () {


   
    var filter = new Filter()
    window._filter = filter

    $(window).on('scroll', function () {
        var itemList = $('.campaign-list-box');
        var scrollTop = $(window).scrollTop();
        var windowHeight = $(window).height();
        var itemListHeight = itemList.outerHeight();

        // 스크롤이 아래로 내려가면서 일정 위치에 도달하면 아이템 로드
        if (scrollTop + windowHeight >= itemListHeight - 100) {
            if (filter.page._arr.length < 2 && !filter.working) {
                filter.working = !filter.working
                filter.next(function () {
                    filter.working = !filter.working
                })
            } else {
                filter.render()
            }
        }
    });

    $(document).on('click', ".status-item", function () {
        $(".status-item").removeClass("active");
        $(this).addClass("active");

        filter.config.individual = $(this).attr('class').split(' ')[1];
        filter.init()
    });

    $(document).on('click', ".option-item", function () {
        $("#selected_order_item").html($(this).text())
        filter.config.order = $(this).data('order')
        filter.init()
        console.log(filter.config);
    });

    $(document).on('click', '.filter-table input[type=checkbox]', function () {
        var className = $(this).closest('tr').attr('class')
        var key = $(this).closest('tr').attr('class').replaceAll('_tr', '')

        if (filter.working) {
            return false
        }

        if ($(this).hasClass('all_check')) {
            filter.check_all(key, this)
        } else {
            var item_length = $('.' + className + ' .filter-item').length

            if($(this).prop('checked')) {
                // 원고료일 때만 라디오처럼 동작
                if(key == 'script_fee') {
                    $('.' + className + ' .filter-item').prop('checked', false);
                    $(this).prop('checked', true);
                }
            }

            checked_true_counter = 0
            $('.' + className + ' .filter-item').each(function (k, v) {
                var value = $(v).data('option')
                if ($(v).prop('checked')) {
                    checked_true_counter++
                    filter.add_option(key, value)
                } else {
                    filter.sub_option(key, value)
                }
            })

            if (checked_true_counter == item_length || checked_true_counter == 0) {
                $('.' + className).find('.all_check').prop('checked', true)

                $('.' + className + ' .filter-item').each(function (k, v) {
                    $(v).prop('checked', false)
                })
            } else {
                $('.' + className).find('.all_check').prop('checked', false)
            }

        }
        filter.init()
    })


    $(document).on('click', ".weeks .week", function () {

        var _this = $(this);
        if (_this.hasClass("active") === true) {
            _this.removeClass("active");
        } else {
            _this.addClass("active");
        }
    });

    $(document).on('click', ".alarm-switch-button", function () {

        var active_button = $(".active-button");
        if (active_button.hasClass("off") === true) {
            active_button.removeClass("off");
            active_button.addClass("on");
            active_button.html("ON");
        } else {
            active_button.removeClass("on");
            active_button.addClass("off");
            active_button.html("OFF");
        }
    });

    $(document).on('click', "#box_open", function () {
        if ($(this).prop("checked") === true) {
            $("#filter_body").addClass("active");
        } else {
            $("#filter_body").removeClass("active");
        }
    });
    $(document).on('click', ".bell-icon", function () {

        if (user_no) {

            var alarm_setting_box = $(".alarm-setting-box");
            if (alarm_setting_box.hasClass("active") === true) {
                alarm_setting_box.removeClass("active");
            } else {
                alarm_setting_box.addClass("active");
            }
        } else {
            access.goLogin()
        }
    });


    $(document).on('click', ".order-select", function () {
        if ($(this).hasClass("active") === true) {
            $(this).removeClass("active");
        } else {
            $(this).addClass("active");
        }
    });

    $(document).on('click', '.campaign-list-box .campaign-item', function () {
        //로그인 유저 링크 클릭시 최근본 캠페인 목록으로 저장
        var board_crawl_no = $(this).closest('.campaign-item-wrapper').data('board_crawl_no')
        var category = 'recently'
        var hitStorage = localStorage.getItem('hit');
        var hit = hitStorage ? JSON.parse(hitStorage) : {};
        hit.list = hit.list ? hit.list : [];
        if ($.inArray(board_crawl_no, hit.list) === -1) {
            hit.list.push(board_crawl_no);
            localStorage.setItem('hit', JSON.stringify(hit))
            $.get(`/api/main/individual?category=${category}&board_crawl_no=${board_crawl_no}`, function() {
                filter.getIndividualTotal()
            });
        }
    })

    if (user_no) {
        $(document).on('click', '.status-button', function () {
            if ($(this).hasClass("active") === true) {
                $(this).removeClass("active");
            } else {
                $(this).siblings().removeClass("active");
                $(this).addClass("active");
            }

            var board_crawl_no = $(this).closest('.campaign-item-wrapper').data('board_crawl_no')
            var category = $(this).data('status');
            $.get(`/api/main/individual?category=${category}&board_crawl_no=${board_crawl_no}`, function () {
                filter.getIndividualTotal()
                filter.renewalIndividual()
            });
        })
    }

    $(document).on('click', '.alarm-show-icon', function () {
        $('.site_name_tr').eq(1).toggle();
        $(this).toggleClass('on');
    })

})
 

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

회사명 : 회사명 / 대표 : 대표자명
주소 : OO도 OO시 OO구 OO동 123-45
사업자 등록번호 : 123-45-67890
전화 : 02-123-4567 팩스 : 02-123-4568
통신판매업신고번호 : 제 OO구 - 123호
개인정보관리책임자 : 정보책임자명

공지사항

  • 게시물이 없습니다.

접속자집계

오늘
38
어제
48
최대
544
전체
16,556
Copyright © Ideashift.shop. All rights reserved.