如何用jQuery中的另一组链接替换链接?

时间:2012-12-13 17:52:44

标签: javascript jquery jquery-selectors

此问题与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的输出。 redmineURLRedmine项目的问题,该问题是根据标题'来计算的。页面中的属性。 commitText是提交的文本,位于Cgit页面的链接中,cgitURL是href属性。

我想用processLinkedCommit创建的最多约10个网址替换原始链接。看来我将不得不删除$(this)并将其替换为URL列表,即我必须将其放在其上一个兄弟之后。我将如何在jQuery中执行此操作?

1 个答案:

答案 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();
    }
});