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

为何无法将点击元素的data-css属性注入到.current-color元素?

问题原因与解决方案

你遇到的问题核心在于jQuery的.data()方法的工作机制:

  • 当你用.data('key', value)时,jQuery并没有直接修改DOM元素上的data-key属性,而是把这个值存在了jQuery内部的缓存对象里。所以你在浏览器开发者工具的HTML面板里看不到data-css属性的变化,但实际上这个值已经被存储起来了——你可以试试在点击后执行console.log(jQuery('.current-color').data('css')),能正常输出对应的值。

  • 如果想要同时更新DOM元素上的data-css属性(让它在HTML里可见),你需要使用.attr()方法来直接操作DOM属性。

修改后的代码

把设置data属性的那行代码换成.attr()即可:

jQuery(".color").on('click', function() {
  const $this = jQuery(this); // 缓存当前元素,提升性能
  jQuery('.current-color')
    .css('background', $this.data('color'))
    .attr('data-css', $this.data('css')); // 这里改用attr()修改DOM属性
  console.log($this.data('css'));
  jQuery('.current-color-name').text($this.find('.color-name').text());
});

完整可运行示例

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<style>
.color-box {
  width: 100px;
  height: 100px;
  cursor: pointer;
  background:#eee;
  border:2px solid #444;
  margin: 10px 0;
}
</style>
<div class="current-color" data-css="">
  <div class="color-box current-color-name">Orange</div>
</div>
<div class="colors">
  <div class="color-box color" data-css="red.css" data-color="#f44336">
    <div class="color-name">red</div>
  </div>
</div>
<script>
jQuery(".color").on('click', function() {
  const $this = jQuery(this);
  jQuery('.current-color')
    .css('background', $this.data('color'))
    .attr('data-css', $this.data('css'));
  console.log($this.data('css'));
  jQuery('.current-color-name').text($this.find('.color-name').text());
});
</script>

现在点击红色色块后,你可以在开发者工具里看到.current-color元素的data-css属性已经变成red.css了,同时依然可以用.data('css')获取到这个值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:30:02