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

본문
$(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');
})
})
- 다음글필터링 UI 연동 무한스크롤 스크립트 클래스 24.04.30
댓글목록
등록된 댓글이 없습니다.