此问题与How can a Greasemonkey script split a link into three related links?相关联。
顺便说一句,在给出的答案(有效)中,方法是修改初始链接并将其他链接附加到它。但是它设计用于链接到单个Redmine问题的提交注释。我修改了它
$('a[title]').each( function () {
redmineURL = getProjectURL($(this).attr('title'));
});
$("a[href*='/commit/']").each ( function () {
/*-- Parse each link for the expected format:
refs #{number} {description text}
*/
var jThis = $(this);
if ($(this).text().match(/#\d+\b/g)) {
var commitText = $(this).text();
var cgitURL = $(this).attr('href');
//$(this).text (commitText[1]);
$(this).after(processLinkedCommit(redmineURL, commitText, cgitURL));
}
} );
使用此方法,原始链接应替换为函数processLinkedCommit
的输出。 redmineURL
是Redmine
项目的问题,该问题是根据标题'来计算的。页面中的属性。 commitText
是提交的文本,位于Cgit
页面的链接中,cgitURL
是href属性。
我想用processLinkedCommit
创建的最多约10个网址替换原始链接。看来我将不得不删除$(this)并将其替换为URL列表,即我必须将其放在其上一个兄弟之后。我将如何在jQuery中执行此操作?
答案 0 :(得分:0)
经过一番思考和查找文档之后,我想出了这个解决方案。使用.after()
函数附加替换网址,并使用.remove()
函数删除原始链接;
$('a[title]').each( function () {
redmineURL = getProjectURL($(this).attr('title'));
});
$("a[href*='/commit/']").each ( function () {
if ($(this).text().match(/#\d+\b/g)) {
var commitText = $(this).text();
var cgitURL = $(this).attr('href');
$(this).after(processLinkedCommit(redmineURL, commitText, cgitURL));
$(this).remove();
}
});