在你的代码中,$html
已经是一个 jQuery 对象,它直接代表 <a>
元素本身。当你调用 $html.find('a')
时,实际上是在 <a>
元素内部查找 <a>
子元素(这显然不存在),所以返回空集合导致 .attr('href')
为 undefined
。
正确写法:
直接获取属性(因为
$html
已经是<a>
元素):console.log($html.attr('href'));
如果坚持用
find
(虽然不必要): 需要先包装成父元素再查找:const $wrapper = $('<div>').append(str); // 包装成父元素 console.log($wrapper.find('a').attr('href'));
原因解析:
$(str)
会直接将字符串解析为 DOM 元素,此时$html
就是<a>
对象。.find()
只在当前元素的子节点中查找,而你的<a>
没有子节点。
修正后的完整代码:
<script>
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.attr('href')); // ✅直接获取属性
</script>
输出结果会是:
https://10.8.87.73:9876/backstage/workflow/flowRun/myAllJobsList?menu=25389880aa664d8ab08d308c094256a3&GratuitousProxy=c1a516fc7f385b92a23305733f31b2a0
内容由零声教学AI助手提供,问题来源于学员提问