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

jQuery中Box调整尺寸时Span属性未变更的技术问题

解决jQuery中.box尺寸变化时.s元素属性不更新的问题

嘿,我来帮你搞定这个问题!你遇到的核心问题是:jQuery的resize()方法默认只对window对象生效,普通DOM元素(比如你的.box)并不会触发这个事件。所以当你hover改变.box宽度时,那段判断.s颜色的代码根本没被执行,自然看不到预期效果。

下面给你两种可行的解决方案,按需选择:

方案1:针对hover场景直接绑定事件

既然你的.box宽度变化是由hover触发的,那我们可以直接在hover的回调里检查宽度并更新.s的颜色,这种方式最直接高效:

完整代码示例

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<style>
.box{ 
  width: 60px; 
  height: 60px; 
  background-color: red; 
  transition: width 0.3s; /* 加个过渡动画让尺寸变化更平滑 */
} 
.box:hover{ 
  width: 120px; 
}
</style>
<div class="box"></div>
<br>
<span class="s">我是要变色的文本</span>

<script>
$(document).ready(function(){
  // 缓存选择器,避免重复DOM查询,提升性能
  const $box = $(".box");
  const $s = $(".s");

  // 页面加载完成后先初始化一次颜色
  updateSColor();

  // hover进入和离开时都触发颜色更新
  $box.hover(
    function() {
      updateSColor();
    },
    function() {
      updateSColor();
    }
  );

  // 封装颜色更新逻辑,避免重复代码
  function updateSColor() {
    if ($box.width() < 60) {
      $s.css("color", "red");
    } else {
      $s.css("color", "blue");
    }
  }
});
</script>

方案2:通用尺寸监听(MutationObserver)

如果以后你的.box尺寸可能通过其他方式改变(比如JS动态修改、其他CSS状态切换),可以用MutationObserver来监听元素的样式变化,这是更通用的解决方案:

完整代码示例

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<style>
.box{ 
  width: 60px; 
  height: 60px; 
  background-color: red; 
  transition: width 0.3s;
} 
.box:hover{ 
  width: 120px; 
}
</style>
<div class="box"></div>
<br>
<span class="s">我是要变色的文本</span>

<script>
$(document).ready(function(){
  const $box = $(".box");
  const $s = $(".s");

  // 初始化颜色
  updateSColor();

  // 创建MutationObserver实例,监听样式变化
  const observer = new MutationObserver(function(mutations) {
    updateSColor();
  });

  // 监听.box的style属性变化
  observer.observe($box[0], {
    attributes: true,
    attributeFilter: ['style']
  });

  function updateSColor() {
    if ($box.width() < 60) {
      $s.css("color", "red");
    } else {
      $s.css("color", "blue");
    }
  }
});
</script>

额外小提示

  • 缓存jQuery选择器(比如const $box = $(".box"))可以减少重复DOM查询,提升代码性能;
  • 页面初始化时调用一次颜色更新函数,能确保初始状态符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 02:27:27