我写了一个小函数,它基本上是为了检查某些文本是否恰好是这个或那个:
function doSelect(text) {
return $wikiDOM.find(".infobox th").filter(function() {
return $(this).text() === text;
});
}
我运行此操作是为了获取/wiki/
之类的一些链接的<a href="/wiki/Geum_River" title="Geum River">Geum River</a>, <a href="/wiki/Korea" title="Korea">Korea</a>
之后的最后一个字符串
let pattern = new RegExp('^\/wiki\/');
doSelect("Location").siblings('td').find('a').map(function(i, el) {
return console.log(el.href.replace(pattern, ''));
});
但是当我在控制台中检查时,我得到了整个jsFiddle链接
https://fiddle.jshell.net/wiki/Geum_River
https://fiddle.jshell.net/wiki/Korea
我希望
Geum_River
Korea
答案 0 :(得分:1)
问题是因为您正在使用href
的{{1}}属性。通过这样做,您可以检索URI的完整绝对路径,即:<a>
而不是相对路径:https://fiddle.jshell.net/wiki/Geum_River
要更改此行为,请使用/wiki/Geum_River
:
attr()
另外,请仔细检查您是否正确使用let pattern = new RegExp('^\/wiki\/');
doSelect("Location").siblings('td').find('a').map(function(i, el) {
var result = $(this).attr('href').replace(pattern, '');
console.log(result);
return result;
});
。它的目的是创建一个数组,但你没有对它做任何反应。如果您只想循环选择的元素,那么在没有map()
的情况下使用each()
是值得的:
return
答案 1 :(得分:1)
你也可以尝试这样:
//let pattern = new RegExp('^\/wiki\/');
doSelect("Location").siblings('td').find('a').each(function(i, el) {
var name = $(this).attr('href').split('wiki/')[1].trim();
console.log(result);
});