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

如何在执行移动端菜单Javascript时隐藏生成的选择框?

解决方案

可以实现,以下是三种简单的处理方式,既能保证JS正常执行(避免显示桌面端菜单),又能隐藏生成的选择框和提示:

方法一:创建选择框时直接隐藏

原代码里创建<select>的语句存在语法错误(少了一个.),先修复这个问题,再给选择框添加隐藏样式:

把这一行:

$("<select />")appendTo("nav");

改成:

$("<select style='display: none;' />").appendTo("nav");

生成的选择框从一开始就会被隐藏,同时JS的其他逻辑正常执行,桌面端菜单会被原有机制(比如CSS媒体查询)隐藏,对应位置就会显示空白区域。

方法二:在JS代码末尾添加隐藏语句

如果不想修改创建逻辑,也可以在整个jQuery代码块的最后,添加一行隐藏选择框的代码:

修改后的完整代码:

jQuery.noConflict()(function($) {
  $("<select />").appendTo("nav"); // 修复语法错误
  $("<option />", {
    "selected": "selected",
    "value": "",
    "text": "Please choose page"
  }).appendTo("nav select");
  $("nav a").each(function() {
    var el = $(this);
    var perfix = '';
    switch (el.parents().length) {
      case (11):
        perfix = '';
        break;
      case (13):
        perfix = '-- ';
        break;
      default:
        perfix = '';
        break;
    }
    $("<option />", {
      "value": el.attr("href"),
      "text": perfix + el.text()
    }).appendTo("nav select");
    $("nav select").change(function() {
      window.location = $(this).find("option:selected").val();
    });
  });
  // 新增:隐藏生成的选择框
  $("nav select").hide();
});

function bookmarksite(title, url) {
  if (window.sidebar)
    window.sidebar.addPanel(title, url, "");
  else if (window.opera && window.print) {
    var elem = document.createElement('a');
    elem.setAttribute('href', url);
    elem.setAttribute('title', title);
    elem.setAttribute('rel', 'sidebar');
    elem.click();
  } else if (document.all)
    window.external.AddFavorite(url, title);
}

方法三:用CSS隐藏(无需修改JS)

如果你的网站是通过CSS媒体查询控制菜单显示的,也可以直接在手机端的媒体查询规则里添加:

@media (max-width: 768px) { /* 宽度值根据你的手机端断点调整 */
  nav select {
    display: none;
  }
}

这种方式不需要改动JS代码,直接通过CSS隐藏手机端的选择框,同样能达到需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:16:06