0

この質問は、Greasemonkey スクリプトでリンクを 3 つの関連リンクに分割するにはどうすればよいですか? にリンクされています。.

ちなみに、与えられた答え(これは機能します)では、方法は最初のリンクを変更し、それに他のリンクを追加することです。ただし、単一の 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あるプロジェクトです。ページのリンクにあるコミットのテキストであり、href 属性です。RedminecommitTextCgitcgitURL

元のリンクを、 が作成した最大 10 個の URL に置き換えたい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 に答える