如果你需要保留 &
而不是让它被自动转换为 &
,可以通过以下两种方法实现:
方法1:直接获取原始HTML属性(不自动转义)
使用 jQuery 的 .prop()
方法获取原始的 href
属性值(不会对 HTML 实体如 &
进行解码):
let str = `<a url_type="" class="J_menuItem" href="https://10.8.87.73:9876/backstage/workflow/flowRun/myAllJobsList?menu=25389880aa664d8ab08d308c094256a3&GratuitousProxy=c1a516fc7f385b92a23305733f31b2a0" data-index="5" style="color: rgb(94, 95, 97);">所有工单</a>`;
const $html = $(str);
console.log($html.prop('href')); // ✅ 输出包含 &
输出结果:
https://10.8.87.73:9876/backstage/workflow/flowRun/myAllJobsList?menu=25389880aa664d8ab08d308c094256a3&GratuitousProxy=c1a516fc7f385b92a23305733f31b2a0
方法2:从原始字符串中提取(正则匹配)
如果担心 jQuery 自动处理转义,可以直接用正则从原始字符串中提取:
let str = `<a url_type="" class="J_menuItem" href="https://10.8.87.73:9876/backstage/workflow/flowRun/myAllJobsList?menu=25389880aa664d8ab08d308c094256a3&GratuitousProxy=c1a516fc7f385b92a23305733f31b2a0" data-index="5" style="color: rgb(94, 95, 97);">所有工单</a>`;
const match = str.match(/href="([^"]*)/);
console.log(match[1]); // ✅ 输出包含 &
输出结果:
https://10.8.87.73:9876/backstage/workflow/flowRun/myAllJobsList?menu=25389880aa664d8ab08d308c094256a3&GratuitousProxy=c1a516fc7f385b92a23305733f31b2a0
关键点说明
.attr()
vs.prop()
:
.attr('href')
会返回解码后的值(将&
转为&
)。
.prop('href')
返回原始的未解码值(保留&
)。
- 为什么需要保留
&
?
可能是为了后续拼接 URL 或避免二次编码问题,但需注意浏览器在实际使用时仍会将其作为&
处理。
按你的需求选择任一方法即可!
内容由零声教学AI助手提供,问题来源于学员提问