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

如何在媒体查询中嵌入JavaScript?移动端交互需求求助

解决媒体查询中嵌入JavaScript的问题

嘿,你这里踩了个常见的坑——CSS媒体查询里是不能直接放JavaScript代码的!媒体查询是CSS专属的语法,只能用来定义不同屏幕尺寸下的样式规则,嵌套<script>标签完全不符合规范,浏览器会直接忽略这部分内容,所以你的点击事件根本不会生效。

下面是修正后的方案,分两步实现你的需求:

1. 正确的JavaScript逻辑(单独处理屏幕尺寸判断)

我们可以通过JS监听页面加载和窗口 resize 事件,判断当前屏幕宽度是否符合移动端条件,再绑定对应的点击行为:

// 封装处理地址切换的函数
function setupAddressToggle() {
  // 先移除已绑定的事件,避免窗口 resize 时重复绑定
  jQuery('.address0.fa-angle-double-down').off('click');

  // 判断当前屏幕是否为移动端
  if (window.innerWidth <= 767) {
    jQuery('.address0.fa-angle-double-down').on('click', function(event) {
      jQuery("#address-1").toggleClass("expand");
      jQuery('.address0.fa-angle-double-down').toggleClass("less-text");
    });
  }
}

// 页面初始化时执行一次
jQuery(document).ready(function() {
  setupAddressToggle();
});

// 监听窗口大小变化,实时更新逻辑
jQuery(window).on('resize', setupAddressToggle);

2. 配合CSS优化非移动端体验

为了让非移动端(屏幕宽度≥768px)的体验更合理,可以用媒体查询控制元素状态:

/* 非移动端时,始终展开地址栏并隐藏下拉图标 */
@media only screen and (min-width: 768px) {
  #address-1 {
    display: block !important; /* 匹配你expand类的显示状态 */
  }
  .address0.fa-angle-double-down {
    display: none;
  }
}

你的HTML代码可以保持不变

<div class="place">
  <h3><a href="/#/"><i class="fa fa-map-marker"></i> Nevada</a><i class="fa fa-angle-double-down address0" aria-hidden="true"></i></h3>
  <ul>
    <li><i class="fa fa-map-marker"></i> <a href="/#/">Las Vegas</a></li>
  </ul>
</div>

这样调整后,当屏幕切换到移动端视图时,下拉图标会正常触发切换类的行为;非移动端时,地址栏保持展开,下拉图标也会隐藏,完全符合你的需求~

内容的提问来源于stack exchange,提问作者James Daniel Esmatao

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:10:31