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

如何用JQuery获取CSS隔离生成的b-开头随机字符串

解决CSS隔离下动态元素样式不生效的问题

核心思路是从页面已有的、受CSS隔离影响的元素上提取出以b-开头的随机属性名,再将该属性添加到动态生成的元素上,让动态元素匹配对应的CSS规则。

具体实现代码

方法1:从已有目标类元素提取属性

如果页面上已经存在带.test类的元素(受CSS隔离影响),可以直接遍历它的属性找到b-开头的属性:

// 获取第一个带test类的已有元素
const existingTestEl = $('.test').first();
let isolationAttr = '';

// 遍历元素属性,筛选b-开头的属性名
$.each(existingTestEl[0].attributes, function(_, attr) {
  if (attr.name.startsWith('b-')) {
    isolationAttr = attr.name;
    return false; // 找到后终止遍历
  }
});

// 动态添加元素时带上该属性
if (isolationAttr) {
  $('#main').append(`<div ${isolationAttr} class="test">Text</div>`);
}

方法2:从根容器提取属性(更可靠)

CSS隔离的b-属性通常会加到组件的根容器上(比如示例中的#main),直接从根容器提取属性更稳妥:

const rootContainer = $('#main');
let isolationAttr = '';

$.each(rootContainer[0].attributes, function(_, attr) {
  if (attr.name.startsWith('b-')) {
    isolationAttr = attr.name;
    return false;
  }
});

if (isolationAttr) {
  $('#main').append(`<div ${isolationAttr} class="test">Text</div>`);
}

说明

CSS隔离生成的b-开头属性是当前隔离范围的唯一标识,对应的CSS规则只会匹配带有该属性的元素。通过上述方法提取属性名并添加到动态元素后,动态元素就能正确应用隔离后的样式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:15:47