unction updateViewModeToggle($toggle, label, iconUrl) { var $text = $toggle.find('.view-mode-text'); var $icon = $toggle.find('.view-mode-icon'); if (!$text.length) { $toggle.prepend(''); $text = $toggle.find('.view-mode-text'); } if (!$icon.length) { $toggle.append(''); $icon = $toggle.find('.view-mode-icon'); } $text.text(label); $icon.attr({ src: iconUrl, alt: label }); $toggle.attr({ 'aria-label': '切换为' + label, title: '切换为' + label }); } function applyViewMode(mode) { var $viewModeToggle = $('#viewModeToggle'); var $imageList = $('.list_tu'); var $textList = $('.list_zi'); var normalizedMode = mode === 'text' ? 'text' : 'image'; if (normalizedMode === 'text') { $imageList.hide(); $textList.show(); updateViewModeToggle($viewModeToggle, '卡片版', viewModeToggleIcons.card); return; } $textList.hide(); $imageList.show(); updateViewModeToggle($viewModeToggle, '列表版', viewModeToggleIcons.list); } function loadSavedViewMode() { try { return window.localStorage.getItem(listViewModeStorageKey) || 'image'; } catch (error) { return 'image'; } } function saveViewMode(mode) { try { window.localStorage.setItem(listViewModeStorageKey, mode); } catch (error) { return; } } function syncMobileSearchHiddenInputs(url) { var parsedUrl = new URL(url, window.location.origin); var searchParams = parsedUrl.searchParams; ajaxStateFieldNames.forEach(function (name) { var $desktopInput = $desktopForm.find('input[type="hidden"][name="' + name + '"]'); if ($desktopInput.length) { $desktopInput.val(searchParams.get(name) || ''); } if (!$mobileSearchForm.length) { return; } var $existingInput = $mobileSearchForm.find('input[type="hidden"][name="' + name + '"]'); var value = searchParams.get(name) || ''; if (value === '') { $existingInput.remove(); return; } if ($existingInput.length) { $existingInput.val(value); return; } $('', { type: 'hidden', name: name, value: value }).appendTo($mobileSearchForm); }); } function resolveListDigitCount(url) { var parsedUrl = new URL(url, window.location.origin); var digitCountValue = parsedUrl.searchParams.get('digit_count') || ''; if (['5', '6', '7', '8', '9', '10'].indexOf(digitCountValue) >= 0) { return digitCountValue; } var pathMatch = parsedUrl.pathname.match(/\/([5-9]|10)wei\.html$/i); if (pathMatch) { return pathMatch[1]; } return ''; } function initMobileFilters() { var mobileConfigs = [ { trigger: '#wei', param: 'digit_count', data: ["全部", "5位", "6位", "7位", "8位", "9位", "10位"], values: ["", 5, 6, 7, 8, 9, 10] }, { trigger: '#deng', param: 'level_range', data: ["全部", "1-16级", "16-32级", "32-48级", "48-64级", "64-128级", "128级以上"], values: ["", "1-16", "16-32", "32-48", "48-64", "64-128", "128+"] }, { trigger: '#gui', param: 'number_rule_filter', data: ["全部", "AB", "AAA", "AAAA", "5A", "6A", "7A", "8A", "ABC", "ABCD", "ABCDE", "ABCDEF", "AABB", "ABAB", "AABBCC", "AAABBB", "AAAABBBB"], values: ["", "AB", "AAA", "AAAA", "5A", "6A", "7A", "8A", "ABC", "ABCD", "ABCDE", "ABCDEF", "AABB", "ABAB", "AABBCC", "AAABBB", "AAAABBBB"] }, { trigger: '#price', param: 'price_range', data: ["全部", "0-200元", "200-500元", "500-1000元", "1000-2000元", "2000-5000元", "5000-1万元", "1万-3万元", "3万以上"], values: ["", "0-200", "200-500", "500-1000", "1000-2000", "2000-5000", "5000-10000", "10000-30000", "30000+"] }, { trigger: '#lei', param: 'type_group', data: ["全部", "普号", "靓号"], values: ["", "普号", "靓号"] }, { trigger: '#mi', param: 'password_protection', data: ["全部", "无密保", "手机号"], values: ["", "无密保", "手机号"] }, { trigger: '#xin', param: 'can_bind_wechat', data: ["全部", "能绑", "不能绑"], values: ["", 1, 0] }, { trigger: '#pai', param: 'exclude_digits', data: ["全部", "不含4", "不含7", "不含4 7"], values: ["", 4, 7, 47] }, { trigger: '#num', param: 'digit_focus', data: ["全部", "0较多", "1较多", "2较多", "3较多", "4较多", "5较多", "6较多", "7较多", "8较多", "9较多"], values: ["", 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] }, { trigger: '#te', param: 'feature', data: ["全部", "类型号", "黄金靓号", "黑金靓号", "客服号", "爱情号", "发财号", "皇冠号", "业务号"], values: ["", "类型号", "黄金靓号", "黑金靓号", "客服号", "爱情号", "发财号", "皇冠号", "业务号"] } ]; mobileConfigs.forEach(function (config) { var trigger = document.querySelector(config.trigger); if (!trigger || typeof MobileSelect === 'undefined' || trigger.dataset.mobileSelectInitialized === '1') { return; } var currentValue = config.param === 'digit_count' ? resolveListDigitCount(window.location.href) : (new URL(window.location.href).searchParams.get(config.param) || ''); var currentIndex = config.values.indexOf(currentValue); trigger.dataset.mobileSelectInitialized = '1'; new MobileSelect({ trigger: trigger, wheels: [{ data: config.data }], position: [currentIndex >= 0 ? currentIndex : 0], callback: function (indexArr) { var url = new URL(window.location.href); var value = config.values[indexArr[0]] || ''; url.searchParams.delete('page'); if (value === '') { url.searchParams.delete(config.param); } else { url.searchParams.set(config.param, value); } loadListResults(url.toString()); } }); }); } function initListResultPanel() { applyViewMode(loadSavedViewMode()); initMobileFilters(); initMobileInfiniteScroll(); } function scrollTextListToFirstItem() { var $firstNumber = $('.jieguo .list_zi li:first .num a'); var $fallbackTarget = $('.jieguo .list_zi .tit'); var $target = $firstNumber.length ? $firstNumber : $fallbackTarget; if (!$target.length) { return; } var targetTop = Math.max(0, ($target.offset() ? $target.offset().top : 0) - 120); $('html, body').stop(true).animate({ scrollTop: targetTop }, 220); } function syncListBreadcrumb(url) { var normalizedDigitCount = resolveListDigitCount(url); var breadcrumbText = normalizedDigitCount ? (normalizedDigitCount + '位QQ') : '商品筛选'; var $breadcrumbCurrent = $('.bread a.on').last(); if ($breadcrumbCurrent.length) { $breadcrumbCurrent.text(breadcrumbText); } document.title = getListPageTitle(normalizedDigitCount); } function getListPageTitle(digitCount) { var normalizedDigitCount = String(digitCount || ''); if (normalizedDigitCount && listSeoTitleMap[normalizedDigitCount]) { return listSeoTitleMap[normalizedDigitCount]; } return "99靓号网 - 商品筛选"; } function syncListTopNav(url) { var normalizedDigitCount = resolveListDigitCount(url); var activeLabel = normalizedDigitCount ? (normalizedDigitCount + '位QQ') : ''; $('.pc_nav li').removeClass('on'); if (!activeLabel) { return; } $('.pc_nav li').filter(function () { return $.trim($(this).text()) === activeLabel; }).addClass('on'); } function buildPartialUrl(url) { var partialUrl = new URL(url, window.location.origin); partialUrl.searchParams.set('partial', '1'); return partialUrl.toString(); } function isMobileViewport() { return window.matchMedia('(max-width: 768px)').matches; } function disconnectMobileInfiniteScroll() { if (mobileInfiniteObserver) { mobileInfiniteObserver.disconnect(); mobileInfiniteObserver = null; } $(window).off('scroll.listMobileInfinite'); } function updateMobileInfiniteTrigger(text, isEnd) { var $trigger = $('.jieguo .mobile-infinite-trigger'); if (!$trigger.length) { return; } $trigger.find('span').text(text); $trigger.toggleClass('is-end', !!isEnd); } function appendMobileListResults(url) { var $currentResults = $('.jieguo'); var nextUrl = url || $currentResults.attr('data-next-url') || ''; if (!isMobileViewport() || mobileInfiniteLoading || nextUrl === '' || !$currentResults.length) { return; } if (mobileInfiniteRequest && mobileInfiniteRequest.readyState !== 4) { return; } mobileInfiniteLoading = true; $currentResults.addClass('is-mobile-loading'); updateMobileInfiniteTrigger('正在加载...', false); mobileInfiniteRequest = $.ajax({ url: buildPartialUrl(nextUrl), type: 'GET', dataType: 'html' }).done(function (html) { var $newResults = $(html).filter('.jieguo').first(); if (!$newResults.length) { $newResults = $(html).find('.jieguo').first(); } if (!$newResults.length) { return; } var $newImageItems = $newResults.find('.list_tu .jingpin ul').children(); var $newTextItems = $newResults.find('.list_zi ul').children(); var $imageList = $currentResults.find('.list_tu .jingpin ul'); var $textList = $currentResults.find('.list_zi ul'); if ($newImageItems.length && $imageList.length) { $imageList.append($newImageItems); } if ($newTextItems.length && $textList.length) { $textList.append($newTextItems); } $currentResults.attr('data-current-page', $newResults.attr('data-current-page') || $currentResults.attr('data-current-page') || ''); $currentResults.attr('data-total-pages', $newResults.attr('data-total-pages') || $currentResults.attr('data-total-pages') || ''); $currentResults.attr('data-next-url', $newResults.attr('data-next-url') || ''); var $newTrigger = $newResults.find('.mobile-infinite-trigger'); if ($newTrigger.length) { updateMobileInfiniteTrigger($newTrigger.find('span').text() || '继续下滑加载更多', $newTrigger.hasClass('is-end')); } else { updateMobileInfiniteTrigger('已经到底了', true); } initMobileInfiniteScroll(); }).fail(function (xhr, status) { if (status === 'abort') { return; } updateMobileInfiniteTrigger('加载失败,继续下滑重试', false); }).always(function () { mobileInfiniteLoading = false; $currentResults.removeClass('is-mobile-loading'); mobileInfiniteRequest = null; }); } function initMobileInfiniteScroll() { disconnectMobileInfiniteScroll(); var $results = $('.jieguo'); var $trigger = $results.find('.mobile-infinite-trigger'); if (!isMobileViewport() || !$results.length || !$trigger.length || $results.hasClass('jieguo-empty')) { return; } if (!$results.attr('data-next-url')) { updateMobileInfiniteTrigger('已经到底了', true); return; } if ('IntersectionObserver' in window) { mobileInfiniteObserver = new window.IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { appendMobileListResults(); } }); }, { rootMargin: '0px 0px 240px 0px' }); mobileInfiniteObserver.observe($trigger.get(0)); return; } $(window).on('scroll.listMobileInfinite', function () { var triggerTop = $trigger.offset() ? $trigger.offset().top : 0; var viewportBottom = $(window).scrollTop() + $(window).height() + 240; if (viewportBottom >= triggerTop) { appendMobileListResults(); } }); } function loadListResults(url) { var normalizedUrl = new URL(url, window.location.origin); normalizedUrl.searchParams.delete('partial'); if (currentListRequest && currentListRequest.readyState !== 4) { currentListRequest.abort(); } $('.jieguo').addClass('is-loading'); currentListRequest = $.ajax({ url: buildPartialUrl(normalizedUrl.toString()), type: 'GET', dataType: 'html' }).done(function (html) { var $newResults = $(html); $('.jieguo').replaceWith($newResults); window.history.replaceState({}, '', normalizedUrl.toString()); syncMobileSearchHiddenInputs(normalizedUrl.toString()); syncListBreadcrumb(normalizedUrl.toString()); syncListTopNav(normalizedUrl.toString()); initListResultPanel(); if (pendingListScrollTarget === 'text-first-item') { scrollTextListToFirstItem(); } }).fail(function (xhr, status) { if (status === 'abort') { return; } window.location.href = normalizedUrl.toString(); }).always(function () { currentListRequest = null; pendingListScrollTarget = ''; $('.jieguo').removeClass('is-loading'); }); } $desktopForm.find('.shaixuan_2 input[type="radio"]').on('change', function () { if ($(this).attr('name') === 'price_range') { $desktopForm.find('input[name="price_min"], input[name="price_max"]').val(''); } $desktopForm.trigger('submit'); }); $desktopForm.on('submit', function (event) { event.preventDefault(); var url = new URL($(this).attr('action') || 'list.php', window.location.origin); $(this).serializeArray().forEach(function (item) { if (item.value !== '') { url.searchParams.append(item.name, item.value); } }); loadListResults(url.toString()); }); $mobileSearchForm.on('submit', function (event) { event.preventDefault(); var url = new URL($(this).attr('action') || 'list.php', window.location.origin); $(this).serializeArray().forEach(function (item) { if (item.value !== '') { url.searchParams.append(item.name, item.value); } }); loadListResults(url.toString()); }); $(document).on('click', '#viewModeToggle', function () { var nextMode = $('.list_zi').is(':visible') ? 'image' : 'text'; applyViewMode(nextMode); saveViewMode(nextMode); }); $(document).on('click', '.jieguo .sort-toggle, .jieguo .pages a, .jieguo .list-reset-btn', function (event) { event.preventDefault(); var href = $(this).attr('href'); pendingListScrollTarget = $(this).closest('.pages').length && $('.list_zi').is(':visible') ? 'text-first-item' : ''; if (href) { loadListResults(href); } }); $(document).on('submit', '.jieguo .page-jump', function (event) { event.preventDefault(); pendingListScrollTarget = $('.list_zi').is(':visible') ? 'text-first-item' : ''; var url = new URL($(this).attr('action') || 'list.php', window.location.origin); $(this).serializeArray().forEach(function (item) { if (item.value !== '') { url.searchParams.append(item.name, item.value); } }); loadListResults(url.toString()); }); $(window).off('resize.listMobileInfinite').on('resize.listMobileInfinite', function () { initMobileInfiniteScroll(); }); initListResultPanel(); syncListBreadcrumb(window.location.href); syncListTopNav(window.location.href); }); -->
客服二维码

长按识别图中二维码 添加客服

客服微信

客服微信

扫码加微信

客服QQ

客服QQ

199-0716-6868

营业时间

营业时间

10:00-23:00

返回顶部

返回顶部