common-ui.js 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765
  1. /* *******************************************
  2. [1][ prefix ]
  3. uifn_
  4. [2][ index ]
  5. 1. Variables (전역변수)
  6. 2. Init (초기설정)
  7. 3. Utility (유틸리티)
  8. 4. Custom (라이브러리 커스텀)
  9. 5. Content (컨텐츠)
  10. [3][ update ]
  11. 2020.12.02 FOOT area - popup, family site, scrollTop
  12. 2020.12.10 FORM - check-All, input-File-Add, Select Custom
  13. ******************************************* */
  14. /* * * * * * * * * * * * * * * * * * * * * *
  15. (1) Variables (전역변수)
  16. * * * * * * * * * * * * * * * * * * * * * */
  17. /* * * * * * * * * * * * * * * * * * * * * * *
  18. 2. Init (초기설정)
  19. * * * * * * * * * * * * * * * * * * * * * */
  20. $(document).ready(function(){
  21. // history back
  22. $(".back").on("click", function () {
  23. history.back()
  24. });
  25. // main css 호출 제거
  26. var uifn_DISCR = $('#container').attr('class');
  27. var uifn_DISCRCLASS = "main";
  28. if (uifn_DISCR.indexOf(uifn_DISCRCLASS) == -1) {
  29. jQuery("link[rel=stylesheet][href*='css/main.css']").remove();
  30. };
  31. // header minify
  32. $(function(){
  33. $(window).scroll(function(){
  34. //var scroll = $(this).scrollTop();
  35. var headerH = $('.common_header > .hd_top_banner').outerHeight() + $('.common_header > .area').outerHeight();
  36. var miniGnbH = $('.common_header > .gnb').outerHeight();
  37. if ($(window).scrollTop() >= headerH){
  38. //header minify
  39. $("header").addClass("minify");
  40. $("#container").css("padding-top",miniGnbH);
  41. }
  42. else {
  43. //header minify
  44. $("header").removeClass("minify");
  45. $("#container").css("padding-top","0px");
  46. }
  47. });
  48. });
  49. // items like on/off
  50. $(function(){
  51. $(".itemLike").click(function () {
  52. $(this).toggleClass("likeit");
  53. });
  54. });
  55. });
  56. /* * * * * * * * * * * * * * * * * * * * * * *
  57. 3. Utility (유틸리티)
  58. * * * * * * * * * * * * * * * * * * * * * */
  59. // FORM
  60. // input-File-Add
  61. $(document).ready(function() {
  62. if (window.File && window.FileList && window.FileReader) {
  63. $("#fileAdd").on("change", function(e) {
  64. var files = e.target.files,
  65. filesLength = files.length;
  66. console.log(filesLength);
  67. var cmtLa = $('.cmt .cmt_thumb .form_field .imgUpload label');
  68. var cmtIn = $('.cmt .cmt_thumb .form_field .imgUpload input');
  69. var myrvLa = $('.myReviewWrite .form_field .imgUpload label');
  70. var myrvIn = $('.myReviewWrite .form_field .imgUpload input');
  71. for (var i = 0; i < filesLength; i++) {
  72. var f = files[i]
  73. var fileReader = new FileReader();
  74. fileReader.onload = (function(e) {
  75. var file = e.target;
  76. console.log(file);
  77. $("<span class=\"pics\">" +
  78. "<img class=\"picsThumbs\" src=\"" + e.target.result + "\" title=\"" + file.name + "\"/>" +
  79. "<br/><span class=\"removes\">Removes image</span>" +
  80. "</span>").insertAfter("#fileAdd");
  81. $(".removes").click(function(){
  82. $(this).parent(".pics").closest(".imgUpload").children("input").val("");
  83. $(this).parent(".pics").remove();
  84. cmtLa.css('display', 'block');
  85. cmtIn.css('display', 'block');
  86. myrvLa.css('display', 'block');
  87. myrvIn.css('display', 'block');
  88. $('#fileAdd').removeAttr("disabled");
  89. });
  90. });
  91. fileReader.readAsDataURL(f);
  92. var maxFileLength = 10; /* 최대 파일 갯수를 입력해 주세요 */
  93. var imgFiles=$('.imgUpload .pics');
  94. var cmtLa = $('.cmt .cmt_thumb .form_field .imgUpload label');
  95. var cmtIn = $('.cmt .cmt_thumb .form_field .imgUpload input');
  96. var myrvLa = $('.myReviewWrite .form_field .imgUpload label');
  97. var myrvIn = $('.myReviewWrite .form_field .imgUpload input');
  98. if (imgFiles.length >= maxFileLength-1) {
  99. //mcxDialog.alert('이미지는 최대' + maxFileLength +'장 까지 첨부 가능합니다.'); //210507_삭제
  100. $('#fileAdd').attr("disabled",true);
  101. cmtLa.css('display', 'none');
  102. cmtIn.css('display', 'none');
  103. myrvLa.css('display', 'none');
  104. myrvIn.css('display', 'none');
  105. } else if(imgFiles.length < maxFileLength){
  106. $('#fileAdd').removeAttr("disabled");
  107. }
  108. }
  109. });
  110. } else {
  111. alert("브라우저가 File API를 지원하지 않습니다.")
  112. }
  113. });
  114. // input-File-Adds
  115. $(document).ready(function() {
  116. if (window.File && window.FileList && window.FileReader) {
  117. $("#fileAdds").on("change", function(e) {
  118. var files = e.target.files,
  119. filesLength = files.length;
  120. for (var i = 0; i < filesLength; i++) {
  121. var f = files[i]
  122. var fileReader = new FileReader();
  123. fileReader.onload = (function(e) {
  124. var file = e.target;
  125. $("<span class=\"pics\">" +
  126. "<img class=\"picsThumbs\" src=\"" + e.target.result + "\" title=\"" + file.name + "\"/>" +
  127. "<br/><span class=\"removes\">Removes image</span>" +
  128. "</span>").insertAfter("#fileAdds");
  129. $(".removes").click(function(){
  130. $(this).parent(".pics").remove();
  131. });
  132. });
  133. fileReader.readAsDataURL(f);
  134. }
  135. });
  136. } else {
  137. alert("브라우저가 File API를 지원하지 않습니다.")
  138. }
  139. });
  140. // check-All
  141. $( document ).ready(function() {
  142. var $chkAll = $('.check-all');
  143. $chkAll.change(function () {
  144. var checked = $(this).prop('checked');
  145. $('input[name="dd"]').prop('checked', checked);
  146. });
  147. var ddChk = $('input[name="dd"]');
  148. ddChk.change(function () {
  149. var ddChkLength = ddChk.length;
  150. var checkedLength = $('input[name="dd"]:checked').length;
  151. var selectAll = (ddChkLength == checkedLength);
  152. $chkAll.prop('checked', selectAll);
  153. });
  154. });
  155. //Select Custom
  156. $( document ).ready(function() {
  157. $('select').each(function(){
  158. var $this = $(this), numberOfOptions = $(this).children('option').length;
  159. $this.addClass('select_hidden');
  160. $this.wrap('<div class="select"></div>');
  161. $this.after('<div class="select_dress"></div>');
  162. var $dressSelect = $this.next('div.select_dress');
  163. $dressSelect.text($this.children('option').eq(0).text());
  164. var $selList = $('<ul />', {
  165. 'class': 'select_options'
  166. }).insertAfter($dressSelect);
  167. for (var i = 0; i < numberOfOptions; i++) {
  168. $('<li />', {
  169. text: $this.children('option').eq(i).text(),
  170. rel: $this.children('option').eq(i).val(),
  171. class: $this.children('option').eq(i).attr('disabled')
  172. }).appendTo($selList);
  173. }
  174. var $selListItems = $selList.children('li');
  175. $dressSelect.click(function(e) {
  176. e.stopPropagation();
  177. $('div.select_dress.active').not(this).each(function(){
  178. $(this).removeClass('active').next('ul.select_options').hide();
  179. });
  180. $(this).toggleClass('active').next('ul.select_options').toggle();
  181. });
  182. $selListItems.click(function(e) {
  183. e.stopPropagation();
  184. if($(this).hasClass('disabled')){
  185. $this.val($(this).attr('rel',false));
  186. }
  187. else{
  188. $dressSelect.text($(this).text()).removeClass('active');
  189. $this.val($(this).attr('rel'));
  190. $selList.hide();
  191. }
  192. });
  193. $(document).click(function() {
  194. $dressSelect.removeClass('active');
  195. $selList.hide();
  196. });
  197. });
  198. });
  199. // Select-Combo-Custom
  200. function sCombo(selector){
  201. this.$selectBox = null,
  202. this.$select = null,
  203. this.$list = null,
  204. this.$listLi = null;
  205. sCombo.prototype.init = function(selector){
  206. this.$selectBox = $(selector);
  207. this.$select = this.$selectBox.find('.combo .select');
  208. this.$list = this.$selectBox.find('.combo .list');
  209. this.$listLi = this.$list.children('li');
  210. }
  211. sCombo.prototype.initEvent = function(e){
  212. var that = this;
  213. this.$select.on('click', function(e){
  214. that.listOn();
  215. });
  216. this.$listLi.on('click', function(e){
  217. that.listSelect($(this));
  218. });
  219. $(document).on('click', function(e){
  220. that.listOff($(e.target));
  221. });
  222. }
  223. sCombo.prototype.listOn = function(){
  224. if(this.$selectBox.hasClass('on')){
  225. this.$selectBox.removeClass('on');
  226. this.$list.css('display', 'none');
  227. } else {
  228. this.$selectBox.addClass('on');
  229. this.$list.css('display', 'block');
  230. }
  231. //this.$selectBox.toggleClass('on');
  232. //if(this.$selectBox.hasClass('on')){
  233. // this.$list.css('display', 'block');
  234. //}else{
  235. // this.$list.css('display', 'none');
  236. //};
  237. }
  238. sCombo.prototype.listSelect = function($target){
  239. $target.addClass('selected').siblings('li').removeClass('selected');
  240. this.$selectBox.removeClass('on');
  241. //this.$select.text($target.text());
  242. this.$select.html($target.html());
  243. this.$list.css('display', 'none');
  244. console.log($target.html())
  245. }
  246. sCombo.prototype.listOff = function($target){
  247. if(!$target.is(this.$select) && this.$selectBox.hasClass('on')){
  248. this.$selectBox.removeClass('on');
  249. this.$list.css('display', 'none');
  250. };
  251. }
  252. this.init(selector);
  253. this.initEvent();
  254. };
  255. // selectBrand on/off
  256. $( document ).ready( function() {
  257. $("#selectBrand .brandbox input").on("click", function() {
  258. $("#selectBrand .brandbox input").removeClass("on");
  259. $(this).addClass("on");
  260. });
  261. });
  262. // dropDownMenu
  263. $(document).on('click','.tgl_dropdown',function(e){
  264. $(this).next('.dropdown_menu').slideToggle(300);
  265. $(this).toggleClass('on');
  266. return false;
  267. });
  268. /* alert */
  269. $(function(){
  270. $('.alertCls').click(function(){
  271. setTimeout(function(){
  272. $('.alert').css('animation', 'none');
  273. $('.alert').css('display', 'none');
  274. }, 300);
  275. // uifn_currCallback();
  276. });
  277. });
  278. /* * * * * * * * * * * * * * * * * * * * * * *
  279. 4. Custom (라이브러리 커스텀)
  280. * * * * * * * * * * * * * * * * * * * * * */
  281. $( document ).ready(function() {
  282. //datepicker
  283. $.datepicker.regional['kr'] = {
  284. dateFormat: 'yy-mm-dd' // 날짜 포맷 설정
  285. };
  286. $.datepicker.setDefaults($.datepicker.regional['kr']);
  287. });
  288. /* * * * * * * * * * * * * * * * * * * * * * *
  289. 5. Content (컨텐츠)
  290. * * * * * * * * * * * * * * * * * * * * * */
  291. $(document).ready( function() {
  292. $(function(){
  293. if($(".content").hasClass("dp_hotdeal") || $(".content").hasClass("dp_Bulletship")){
  294. $('.container').closest('div').addClass('omitt');
  295. }
  296. });
  297. //LNB_상품리스트 카테고리
  298. $(document).on('click','.lnb .lnb_category ul li a',function(e){
  299. $(this).toggleClass('on');
  300. $(this).parent('li').siblings('li').children('a').removeClass('on');
  301. $(this).parent('li').siblings('li').removeClass('on');
  302. $(this).parent('li').siblings('li').find('a').removeClass('on');
  303. $(this).parent('li').toggleClass('on');
  304. $(this).parent('li').siblings('li').find('.sub_cate').hide();
  305. $(this).parent('li').children(".sub_cate").toggle();
  306. });
  307. /* 고객센터_accordion */
  308. /* 210428_수정 : 아코디언 */
  309. $(document).on('click','.cs .foldGroup .fold_head',function(){
  310. $(this).toggleClass('on');
  311. $(this).siblings('.fold_cont').slideToggle(100);
  312. $(this).parents('li').siblings('li').find('.fold_head').removeClass('on');
  313. $(this).parents('li').siblings('li').find('.fold_cont').slideUp(100);
  314. });
  315. /* //210428_수정 : 아코디언 */
  316. /* 주문결제_accordion */
  317. /* 210428_수정 : 아코디언 */
  318. $(document).on('click','.od .foldGroup .fold_head .fold_tit',function(e){
  319. //$(this).parents('.foldGroup li').find('.fold_cont').slideToggle(100);
  320. //$(this).parents('.fold_head').toggleClass('on');
  321. $(this).parents('.fold_head').toggleClass('on');
  322. $(this).parents('.foldGroup li').find('.fold_cont').slideToggle(100);
  323. $(this).parents('li').siblings('li').find('.fold_head').removeClass('on');
  324. $(this).parents('li').siblings('li').find('.fold_cont').slideUp(100);
  325. return false;
  326. }).on('click','.od .foldGroup .fold_paymethod .fold_head .fold_tit',function(e){
  327. $("#rdi-paymethod-quick").trigger("click");
  328. return false;
  329. });
  330. /* //210428_수정 : 아코디언 */
  331. /* 아이디/비밀번호 찾기_accordion:open */
  332. $(document).on('click','.mb .foldGroup.checkcase .fold_head',function(e){
  333. $(this).parents('.foldGroup li').find('.fold_cont').slideDown(100);
  334. $(this).addClass('on');
  335. $('.foldGroup.checkcase .fold_head').not(this).removeClass('on').next('.fold_cont').slideUp(100);
  336. return false;
  337. });
  338. /* 아이디/비밀번호 찾기_accordion:close */
  339. $(document).on('click','.mb .foldGroup.checkcase .fold_head.on',function(e){
  340. $(this).removeClass('on');
  341. $(this).next('.fold_cont').slideUp(100);
  342. return false;
  343. });
  344. /* 아이디/비밀번호 찾기_taps */
  345. $(document).on('click','.registration_nav ul li',function(e){
  346. $('.foldGroup.checkcase .fold_head').removeClass('on').next('.fold_cont').hide();
  347. $(this).addClass('active').siblings().removeClass('active');
  348. $('.registration_tap .form_group').hide();
  349. $('.registration_tap .form_group').eq($(this).index()).show();
  350. return false;
  351. });
  352. /* 전시 팝업 샘플팝업1 : 수정예정 */
  353. $(document).on('click','#coupon_pop',function(e){
  354. $("#coupon_modal_01").modal("show");
  355. return false;
  356. });
  357. /* 전시 팝업 샘플팝업2 : 수정예정 */
  358. $(document).on('click','#coupon_pop2',function(e){
  359. $("#coupon_modal_02").modal("show");
  360. return false;
  361. });
  362. /* 같은 데이터 노출시 동일 영역끼리 병합 */
  363. $(".merge_row").each(function() {
  364. var txtcont = $(this).text();
  365. var rows = $(this).parents("table").find(".merge_row:contains('" + txtcont + "')");
  366. if (rows.length > 1) {
  367. rows.eq(0).attr("rowspan", rows.length);
  368. rows.not(":eq(0)").remove();
  369. }
  370. rows.eq(0).parent('tr').attr('class', 'bundle_row');
  371. });
  372. /* 드래그 스크롤 : 수정 예정 */
  373. var x,left,down;
  374. $(".bullet_sticky_nav ul").mousedown(function(e){
  375. e.preventDefault();
  376. down = true;
  377. x = e.pageX;
  378. left = $(this).scrollLeft();
  379. });
  380. $("body").mousemove(function(e){
  381. if(down){
  382. var newX = e.pageX;
  383. $(".bullet_sticky_nav ul").scrollLeft(left - newX + x);
  384. }
  385. });
  386. $("body").mouseup(function(e){down = false;});
  387. /* //드래그 스크롤 : 수정 예정 */
  388. /* 상품리스트 sticky_nav_header */
  389. $(function(){
  390. /* 210512_수정 : 스크롤시 해당 상품영역 sticky_nav 구분자 active 클래스추가 수정 */
  391. /* 스크롤시 효과 */
  392. $(window).scroll(function(){
  393. var windScroll = $(window).scrollTop();
  394. var miniGnbH = $('.common_header .gnb').outerHeight();
  395. var stickyTopNavH = $('.common_header .gnb').outerHeight();
  396. var navOffsetTop = $('.sticky_nav_list').size() ? $('.sticky_nav_list').offset().top : 0;
  397. var navOffsetBottom = navOffsetTop + $('.list_content').outerHeight();
  398. var arr = [];
  399. if (windScroll > navOffsetTop){
  400. $('.sticky_nav_list').css('padding-top',stickyTopNavH);
  401. $(".sticky_nav").addClass("sticky");
  402. } else {
  403. $('.sticky_nav_list').css('padding-top','0px');
  404. $(".sticky_nav").removeClass("sticky");
  405. }
  406. if(windScroll > navOffsetBottom) {
  407. $('.sticky_nav_list').css('padding-top','0px');
  408. $(".sticky_nav").removeClass("sticky");
  409. }
  410. $('.sticky_nav li').find('a').removeClass('active');
  411. var $menu = $('.sticky_nav li a'),
  412. $contents = $(".list_content > div.dp_item_list"); //210517_ 수정 : 전시 브랜드별 상품리스트 특정 class .dp_item_list 추가.
  413. $.each($contents, function(idx, item){
  414. var $target = $(".list_content > div.dp_item_list").eq(idx), //210517_ 수정 : 전시 브랜드별 상품리스트 특정 class .dp_item_list 추가.
  415. i = $target.index(),
  416. targetHeader = $(".sticky_nav").outerHeight() + 30,
  417. targetTop = $target.offset().top - targetHeader;
  418. if (targetTop < windScroll) {
  419. $menu.removeClass('active');
  420. $menu.eq(idx).addClass('active');
  421. }
  422. })
  423. });
  424. /* 상품리스트 sticky_nav_link */
  425. $(".sticky_nav li a").on("click", function(){
  426. var hookHeader = $(".sticky_nav").outerHeight();
  427. var hookHref = $(this).attr("href");
  428. //var hookPot = $(hookHref == "#" || hookHref == "" ? "body" : hookHref);
  429. var hookPot = $(hookHref);
  430. var hookPos = hookPot.offset().top - hookHeader;
  431. $("html, body").animate({scrollTop: hookPos}, 300);
  432. //$('.sticky_nav li a').removeClass('active');
  433. //$(this).addClass('active');
  434. });
  435. });
  436. //210428_카테고리 재클릭 시 사라짐
  437. //상품 리스트_필터
  438. var listFilNum = 0;
  439. $('.filter_list ul li').click(function(){
  440. //$(".filter_list ul li").removeClass('on');
  441. $(".dp_list .sort, .sch_result .sort").removeClass('on');
  442. if($(this).hasClass("on")){
  443. $(this).removeClass('on');
  444. $("."+$(this).data('id')).removeClass('on');
  445. listFilNum = 0;
  446. } else {
  447. $(".filter_list ul li").removeClass('on');
  448. $(this).addClass('on');
  449. $("."+$(this).data('id')).addClass('on');
  450. listFilNum = 1;
  451. }
  452. console.log();
  453. $('.sort ul li').removeClass('on');
  454. $('.sort ul li div').hide();
  455. $('.container .dp_list .fillter, .container .sch_result .fillter').show();
  456. });
  457. // 카테고리
  458. $('.tap_close').click(function(){
  459. $(this).parent().removeClass('on');
  460. $('.filter_content .sort ul li div').hide();
  461. $('.filter_content .sort ul li, .container .filter_list ul li').removeClass('on');
  462. $('.container .dp_list .sort, .container .sch_result .sort').removeClass('on');
  463. });
  464. });
  465. /* * * * * * * * * * * * * * * * * * * * * * *
  466. 6. Content (상품상세)
  467. * * * * * * * * * * * * * * * * * * * * * */
  468. $(document).ready( function() {
  469. //팝업 - 상품썸네일 크게보기
  470. $(document).on('click','.pd_detail .area_pic .thumb_list_wrap ul li a',function(e){
  471. $('body').addClass('lock');
  472. $("#pdItemThumbPop .full_pop_container").empty();
  473. var thumbIndex = $(this).index() + 1;
  474. var thumbImglength = $('.pd_detail .area_pic .thumb_list_wrap ul li').length;
  475. var popThumbImgHtml = "";
  476. for (i = 1; i <= thumbImglength; i++) {
  477. //var thumbImg = $(this).find('img');
  478. var thumbContentHtml = $('.pd_detail .area_pic .thumb_list_wrap ul li:nth-child('+i+') a .thumb').html();
  479. popThumbImgHtml += "<div id=popThumb"+i+" class='scaleview'>" + thumbContentHtml + "</div>";
  480. }
  481. $("#pdItemThumbPop .full_pop_container").append(popThumbImgHtml);
  482. $("#pdItemThumbPop").show();
  483. var scrollThumbPop = $('#popThumb'+thumbIndex).offset().top;
  484. var currentTop = $(window).scrollTop();
  485. $('#pdItemThumbPop').animate({scrollTop : scrollThumbPop - currentTop}, 1000);
  486. return false;
  487. }).on('click','#btn_close_itemThumbPop, .pd_itemthumb_pop .scaleview img',function(e){
  488. $("#pdItemThumbPop").scrollTop(0);
  489. $("#pdItemThumbPop").hide();
  490. $('body').removeClass('lock');
  491. return false;
  492. });
  493. // 상품 대표설명 > 좌측 상품썸네일 navi, 우측 상품정보 고정
  494. $(window).scroll(function(){
  495. var scrollTop= $(window).scrollTop();
  496. var headerH = $('.common_header > .hd_top_banner').outerHeight() + $('.common_header > .area').outerHeight();
  497. var miniGnbH = $('.common_header > .gnb').outerHeight();
  498. var firstFixed = headerH + miniGnbH;
  499. var thumbListWrap_h = $('.pd_detail .thumb_list_wrap').outerHeight();
  500. var descWrap_h = $('.pd_detail .desc_wrap').outerHeight();
  501. var secondFixed_left = firstFixed + $('.pd_detail').outerHeight() - $('.pd_detail .thumb_nav_wrap').outerHeight();
  502. var secondFixed_right = firstFixed + $('.pd_detail .desc_wrap').outerHeight() - $(window).outerHeight();
  503. var secondFixed_right2 = firstFixed + $('.pd_detail').outerHeight() - $(window).outerHeight();
  504. var pdDetail_t = firstFixed + $('.pd_detail').outerHeight() + 100;
  505. var pdDescWrap_t = pdDetail_t + $('.pd_desc_wrap').outerHeight();
  506. var optionFixed_right = pdDetail_t + $('.pd_desc_wrap').outerHeight() - $('.area_option .opt_wrap').outerHeight();
  507. /* 좌측 상품썸네일 navi 고정 */
  508. if (scrollTop > firstFixed){
  509. $('.pd_detail .area_pic .thumb_nav_wrap').removeClass('fixbottom').addClass('fixtop');
  510. }
  511. else if (scrollTop < firstFixed){
  512. $('.pd_detail .area_pic .thumb_nav_wrap').removeClass('fixtop');
  513. }
  514. if (scrollTop > secondFixed_left){
  515. $('.pd_detail .area_pic .thumb_nav_wrap').removeClass('fixtop').addClass('fixbottom');
  516. }
  517. /* 우측 상품정보 고정 */
  518. if (thumbListWrap_h > descWrap_h && scrollTop > secondFixed_right) {
  519. $('.pd_detail .area_desc .desc_wrap').removeClass('absbottom').addClass('fixbottom');
  520. }
  521. else if (thumbListWrap_h > descWrap_h && scrollTop < secondFixed_right) {
  522. $('.pd_detail .area_desc .desc_wrap').removeClass('fixbottom');
  523. }
  524. if (thumbListWrap_h > descWrap_h && scrollTop > secondFixed_right2) {
  525. $('.pd_detail .area_desc .desc_wrap').removeClass('fixbottom').addClass('absbottom');
  526. }
  527. /* 딜 - 상세정보 탭 고정 */
  528. if (scrollTop > pdDetail_t && scrollTop < pdDescWrap_t){
  529. $('.tab_detail_nav').addClass('fix');
  530. } else {
  531. $('.tab_detail_nav').removeClass('fix');
  532. }
  533. /* 딜 - 우측옵션 고정 */
  534. if (scrollTop > pdDetail_t){
  535. $('.area_option .opt_wrap').removeClass('absbottom').addClass('fixtop');
  536. } else if (scrollTop < pdDetail_t) {
  537. $('.area_option .opt_wrap').removeClass('fixtop');
  538. }
  539. if (scrollTop > optionFixed_right){
  540. $('.area_option .opt_wrap').removeClass('fixtop').addClass('absbottom');
  541. }
  542. });
  543. //슬라이드 - 상품 대표설명 > 좌측 상품썸네일 navi
  544. var thumbNavSwiper = new Swiper('.pd_detail .area_pic .thumb_nav_wrap .swiper-container', {
  545. direction: 'vertical',
  546. allowTouchMove: false,
  547. slidesPerView: 6,
  548. slidesPerGroup : 1,
  549. spaceBetween: 10,
  550. navigation: {
  551. nextEl: '.area_pic .thumb_nav_wrap .swiper-button-next',
  552. prevEl: '.area_pic .thumb_nav_wrap .swiper-button-prev',
  553. },
  554. });
  555. //상품 대표설명 > 상품썸네일 1개일때
  556. var thumblist = $('.pd_detail .area_pic .thumb_list_wrap li');
  557. var thumblistLength = thumblist.length;
  558. if (thumblistLength == 1) {
  559. thumblist.parents('.area_pic').addClass('onlyitem');
  560. } else {
  561. thumblist.parents('.area_pic').removeClass('onlyitem');
  562. }
  563. //상품 대표설명 > 좌측 상품썸네일 6개 이하일때
  564. var thumbnavSlide = $('.pd_detail .area_pic .thumb_nav_wrap .swiper-container .swiper-slide');
  565. var thumbnavLength = thumbnavSlide.length;
  566. if (thumbnavLength < 7) {
  567. thumbnavSlide.parents('.thumbnav').addClass('disabled');
  568. } else {
  569. thumbnavSlide.parents('.thumbnav').removeClass('disabled');
  570. }
  571. //상품 대표설명 > 좌측 상품썸네일 navi 선택시 해당 대표 썸네일 위치로 이동
  572. $(document).on('click','.pd_detail .area_pic .thumbnav .swiper-slide a',function(e){
  573. e.preventDefault();
  574. var miniGnbH = $('.common_header > .gnb').outerHeight();
  575. var targetThumb = $($(this).attr('href'));
  576. var topThumb = targetThumb.offset().top - miniGnbH;
  577. $(this).parents('.thumbnav').find('.swiper-slide').removeClass('on');
  578. $(this).parent('.swiper-slide').addClass('on');
  579. targetThumb.siblings('li').removeClass('on');
  580. targetThumb.addClass('on');
  581. $('html,body').animate({scrollTop : topThumb}, 100);
  582. return false;
  583. });
  584. /* 상품상세 > 상품문의 _accordion */
  585. $(document).on('click','.pd_qnalist .foldGroup .fold_head',function(e){
  586. if($(this).parent().hasClass('secret_qna')){
  587. //210420_수정 : dialog alert 변경.
  588. mcxDialog.alert("비밀글은 열람하실 수 없습니다.", {
  589. sureBtnText: "확인",
  590. });
  591. }else {
  592. $('.fold_head').removeClass('on');
  593. $('.fold_cont').slideUp(100);
  594. //$(this).parents('.foldGroup li').find('.fold_cont').slideToggle(100);
  595. //$(this).parents('.fold_head').toggleClass('on');
  596. if(!$(this).parents('.foldGroup li').find('.fold_cont').is(":visible")){
  597. $(this).parents('.foldGroup li').find('.fold_cont').slideDown(100);
  598. $(this).toggleClass('on');
  599. }
  600. //$(this).parents('.foldGroup li').find('.fold_cont').slideToggle(100);
  601. //$(this).toggleClass('on');
  602. }
  603. });
  604. });
  605. ///////////////////////////////////////////////////////
  606. // 이하 미사용 스크립트 정리예정
  607. //$( document ).ready(function() {
  608. // var footerH = $("#footer").outerHeight();
  609. // var fixedH = $(".fixed_btns").outerHeight();
  610. // var limitH = ((footerH+fixedH)-8);
  611. // uifn_bottomfloat($(".fixed_btns"), footerH);
  612. // $(window).on('scroll', function(){
  613. // uifn_bottomfloat($(".fixed_btns"), footerH);
  614. // });
  615. // uifn_popupCtr();
  616. // uifn_familyCtr();
  617. // //popup
  618. // function uifn_popupCtr() {
  619. // var popupArea = $(".popup-area");
  620. // if(popupArea.css('display') == 'block'){
  621. // popupArea.show();
  622. // document.body.classList.add("stop-scroll");
  623. // };
  624. // popupArea.find(".close").click(function(){
  625. // popupArea.css('display','none');
  626. // document.body.classList.remove("stop-scroll");
  627. // });
  628. // };
  629. // // family site
  630. // function uifn_familyCtr(){
  631. // $('.family-area').click(function(e){
  632. // $('.family-area').toggleClass('on');
  633. // });
  634. // }
  635. // // scrollTop
  636. // function uifn_bottomfloat(object, num) {
  637. // var bottom = $(document).height() - $(window).height() - $(document).scrollTop();
  638. // if (bottom > num) {
  639. // object.removeClass("off");
  640. // } else if (bottom <= num) {
  641. // object.addClass("off");
  642. // } else {
  643. // object.removeClass("off");
  644. // }
  645. // }
  646. //});