使用jQuery无法获取XML中url元素的title属性值,求助
问题解决:提取XML中url元素的title属性生成链接
错误原因
你遇到的「unrecognized expression」错误,核心是$(xml).find(url[1])逻辑错误:url[1]是url元素的文本内容(也就是具体的链接地址),而find()方法需要传入CSS选择器字符串(比如'url'),把链接地址当成选择器解析,自然触发语法错误。
正确实现方案
方案1:直接遍历每个url元素(最直观)
在遍历marker的同时,逐个处理每个url元素,一次性获取它的文本(href值)和title属性:
function parseXml(xml) { $(xml).find("marker").each(function() { let html = ''; // 遍历当前marker下的所有url元素 $(this).find('url').each(function() { const linkHref = $(this).text(); const linkTitle = $(this).attr('title'); // 拼接成目标HTML链接 html += `<a href="${linkHref}">Link: ${linkTitle}</a><br>`; }); // 将生成的html插入到页面目标位置,比如: // $('#link-container').append(html); }); }
方案2:用map存储完整的链接信息(适合后续复用数据)
如果需要先存储所有链接数据再处理,可用map()生成包含href和title的对象数组:
function parseXml(xml) { $(xml).find("marker").each(function() { // 生成包含每个url的href和title的数组 const urlData = $(this).find('url').map(function() { return { href: $(this).text(), title: $(this).attr('title') }; }).get(); let html = ''; // 遍历数组生成链接 for (let i = 0; i < urlData.length; i++) { html += `<a href="${urlData[i].href}">Link: ${urlData[i].title}</a><br>`; } // 后续处理或插入html }); }
补充说明
- 无需单独提取url文本再回头查找元素,直接在遍历
url元素的过程中完成属性和内容的获取,逻辑更清晰且避免错误。 - 若不需要换行,可去掉
<br>标签,根据实际需求调整HTML结构。
内容的提问来源于stack exchange,提问作者Ed S.
相关产品推荐
相关产品推荐

