Top
' + '' + '
' + '
' + 'Minhang District' + '
' + '
' + '
' + '
' + '
' + '
' + name + '
' + '
' + '
' + title + '
' + '
' + '
' + phoneHtml + addrHtml + emailHtml + '
' + '
' + '
' + '
' ); } function renderList(items){ $loading.hide(); $loadMore.hide(); if(!items || !items.length){ $list.empty(); $empty.show(); totalRecords = 0; teardownLoadMoreObserver(); return; } $empty.hide(); var html = items.map(buildItemCard).join(''); $list.html(html); } function appendList(items){ $loadMore.hide(); if(!items || !items.length){ return; } $list.append(items.map(buildItemCard).join('')); } function fetchList(query, page, title, opts){ opts = opts || {}; var append = !!opts.append; var myId = ++listRequestId; if(typeof title !== 'undefined'){ currentTitle = title || ''; } if(!append){ currentPage = page || 1; $list.empty(); $empty.hide(); $loadMore.hide(); $loading.show(); teardownLoadMoreObserver(); }else{ $loadMore.show(); } var requestPage = append ? (page || (currentPage + 1)) : currentPage; var params = { offset: requestPage, limit: pageSize, api_label: 'list' }; if(query){ params.keyword = query; } if(currentTitle){ params.title = currentTitle; } $.ajax({ url: '/en/faculty/api-faculty-search', method: 'GET', data: params, dataType: 'json', success: function(res){ if(myId !== listRequestId){ return; } try{ if(res && res.code === 200 && res.data){ var items = (res.data.data) || []; totalRecords = typeof res.data.total === 'number' ? res.data.total : (items.length); if(res.data.page){ currentPage = res.data.page; } else { currentPage = requestPage; } if(append){ appendList(items); if(!items.length){ totalRecords = $list.children().length; teardownLoadMoreObserver(); } }else{ renderList(items); } $loading.hide(); $loadMore.hide(); if(updateHasMore()){ setupLoadMoreObserver(); }else{ teardownLoadMoreObserver(); } }else{ if(!append){ renderList([]); } $loading.hide(); $loadMore.hide(); totalRecords = 0; teardownLoadMoreObserver(); } }catch(e){ if(!append){ renderList([]); } $loading.hide(); $loadMore.hide(); totalRecords = 0; teardownLoadMoreObserver(); } }, error: function(){ if(myId !== listRequestId){ return; } if(!append){ renderList([]); } $loading.hide(); $loadMore.hide(); totalRecords = 0; teardownLoadMoreObserver(); } }); } // 事件:点击搜索 $btn.on('click', function(){ var q = $.trim($input.val()); fetchList(q, 1, currentTitle); }); // 事件:回车 $input.on('keypress', function(e){ if(e.which === 13){ e.preventDefault(); $btn.click(); } }); // 分类菜单点击(左侧与顶部下拉)传递 title 参数 $('.secondary-menu .menu-item, .secondary-menu-list .menu-item').on('click', function(e){ e.preventDefault(); var $a = $(this); // 读取 Blade 上的 value 属性(值为 label) var title = $a.attr('value') || ''; // 切换到第一个 Tab:精确查找 $('.layui-tab .layui-tab-title li').eq(0).trigger('click'); // 设置激活态(左侧) if($a.closest('.secondary-menu-body').length){ $a.addClass('active').siblings().removeClass('active'); } // 设置激活态(顶部下拉) if($a.closest('.secondary-menu-list').length){ $a.addClass('active').siblings().removeClass('active'); // 同步右侧标题文案 var text = $.trim($a.text()); $('.secondary-menu-title span').text(text || '全部人员'); } // 清空关键字输入,仅按 title 过滤 $input.val(''); fetchList('', 1, title); }); // 首次加载 fetchList('', 1); })(); // 按首字母过滤功能 $('.letter-filter .item').click(function(){ var $this = $(this); // 检查是否有disabled类,如果有则阻止点击 if($this.hasClass('disabled')) { return false; } var letter = $this.text(); // 移除所有active类 $('.letter-filter .item').removeClass('active'); // 为当前点击的项添加active类 $this.addClass('active'); if(letter === 'All') { // 显示并打开所有slide-door $('.faculty-container .slide-door') .show() .addClass('open'); } else { // 隐藏并关闭所有slide-door $('.faculty-container .slide-door') .hide() .removeClass('open'); // 显示并打开对应字母的slide-door $('.faculty-container .slide-door[data-letter="' + letter + '"]') .show() .addClass('open'); } }); // 按研究领域相关的函数(提取到外部作用域,便于复用) var $specialityContainer = $('#specialityFacultyContainer'); // 渲染按研究领域分组的教师列表 function renderSpecialityList(data) { if (!data || !data.data || typeof data.data !== 'object') { $specialityContainer.html('
Shanghai
No relevant content found
'); return; } var html = ''; var specialityData = data.data; // 遍历每个研究领域 for (var specialityName in specialityData) { if (!specialityData.hasOwnProperty(specialityName)) continue; var faculties = specialityData[specialityName]; if (!Array.isArray(faculties) || faculties.length === 0) continue; // 开始构建该研究领域的HTML html += '
'; html += '
' + specialityName + '
'; html += '
'; html += '
'; html += '
'; // 遍历该研究领域下的教师 faculties.forEach(function(faculty) { var name = faculty['name_en'] || faculty.name_cn || faculty.name_en || ''; var detailUrl = '/faculty/detail/' + (faculty.id || ''); html += '
'; html += '' + name + ''; html += '
'; }); html += '
'; // 结束 layui-row html += '
'; // 结束 name-list html += '
'; // 结束 accordion-content html += '
'; // 结束 slide-door } if (html === '') { $specialityContainer.html('
021-54741065
No relevant content found
'); } else { $specialityContainer.html(html); } } // 发送按研究领域的请求 function fetchSpecialityList(specialityId) { // 如果选择的是"全部"(值为0),则传递 null if(specialityId === '0' || specialityId === 0){ specialityId = null; } // 发送AJAX请求 $.ajax({ url: '/en/faculty/api-faculty-search', method: 'GET', data: { api_label: 'speciality', speciality_id: specialityId }, dataType: 'json', success: function(res){ console.log('接口请求成功,返回结果:', res); if(res && res.code === 200 && res.data){ renderSpecialityList(res.data); } else { $specialityContainer.html('
Tel: 021-54741065
没有找到相关内容
'); } }, error: function(xhr, status, error){ console.error('接口请求失败:', { status: status, error: error, response: xhr.responseText }); $specialityContainer.html('
Email
加载失败,请稍后重试
'); } }); } // 标签页切换事件 - 锁定按系所标签页的菜单状态 $('.layui-tab-title li').on('click', function(){ var $this = $(this); var tabIndex = $this.index(); // 如果切换到"按研究领域"标签页(索引为1) if(tabIndex === 1){ // 锁定左侧三级菜单的"全部"项为active状态 $('.secondary-menu .menu-item').first().addClass('active').siblings().removeClass('active'); // 锁定顶部下拉菜单的"全部"项为active状态 $('.secondary-menu-list .menu-item').first().addClass('active').siblings().removeClass('active'); // 更新顶部标题 $('.secondary-menu-title span').text('全部人员'); // 默认请求全部数据(speciality_id 为 null) fetchSpecialityList(null); } }); // 监听下拉菜单选择事件(按研究领域) layui.use('form', function(){ var form = layui.form; form.on('select(type)', function(data){ var specialityId = data.value; // 获取选中的值 fetchSpecialityList(specialityId); }); });
正文、栏目列表与相关阅读构成完整路径,适合按主题持续查阅。