You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery筛选匹配多属性的div 语言筛选功能失效求助

问题排查
  • 逻辑分支覆盖不全:原有代码仅判断了岗位筛选值是否为choose,完全没有兼容语言筛选的选中状态,当用户仅选择语言、或者同时选岗位和语言时,语言条件仅在岗位非choose时部分生效,岗位为choose时直接忽略语言筛选
  • 无效逻辑冗余:岗位为choose时的判断条件$(this).attr('data-vposition') != 'kies'无实际业务意义,且没有加入语言匹配规则,导致只要没选岗位,所有岗位都会直接显示,完全不触发语言筛选
  • 测试数据不匹配:示例HTML中第一个岗位的data-vlanguage属性值为Nederlands,但岗位标题写的是德语、下拉选项里也没有荷兰语选项,会导致匹配异常
修复方案

重构筛选逻辑,不需要拆分复杂分支,统一判断每个岗位是否满足所有已选的筛选规则即可:如果某筛选项选的是choose,则代表该条件不做限制,所有岗位都满足该条件,最终只有同时满足所有选中规则的岗位才会显示。
修复后的JS代码如下:

function ApplyFilter() {
  var Position = $('select.vacancy-position').val();
  var Language = $('select.vacancy-language').val();
  // 遍历所有岗位统一判断匹配规则
  $('.vacancies').find('.vacancy').each(function() {
    const $vacancy = $(this);
    // 岗位匹配规则:未选岗位则自动满足,否则匹配属性值
    const positionMatch = Position === 'choose' || $vacancy.attr('data-vposition') === Position;
    // 语言匹配规则:未选语言则自动满足,否则匹配属性值
    const languageMatch = Language === 'choose' || $vacancy.attr('data-vlanguage') === Language;
    // 同时满足所有规则才显示,否则隐藏
    positionMatch && languageMatch ? $vacancy.fadeIn('fast') : $vacancy.fadeOut('fast');
  });
}

如果需要测试德语机修岗位的匹配效果,可将第一个岗位的data-vlanguage="Nederlands"修改为data-vlanguage="German"即可。

内容的提问来源于stack exchange,提问作者Maarten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 11:15:03