0

这个问题链接到如何 Greasemonkey 脚本如何将链接拆分为三个相关链接?.

顺便说一下,在给出的答案(有效)中,方法是修改初始链接并将其他链接附加到它。但是,它是为链接到单个 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)); 
    }
} );

使用此方法,原始链接应替换为函数的输出processLinkedCommitredmineURLRedmine有问题的项目,它是根据页面中的“标题”属性计算的。commitText是提交的文本,位于Cgit页面链接中,cgitURL是 href 属性。

我想用最多 10 个由processLinkedCommit. 看来我将不得不删除 $(this) 并将其替换为 URL 列表,即我必须将它放在它的前一个兄弟之后。我将如何在 jQuery 中执行此操作?

4

1 回答 1

0

经过更多思考和查阅文档,我想出了这个解决方案。使用该函数附加替换 URL,并使用该.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();
    }
});
于 2012-12-14T13:13:28.090 回答