如何用 <a> 替换 <button> 并保存所有属性

How to replace a <button> with <a> and saving all attributes

<div class="pagination">
        <button class="ajax left" data-href="" rel="prev"></button>
        <button class="active">1</button><button class="ajax" data-href="/legenda/carrega_destaques/todos/2">2</button>
        <button class="ajax" data-href="/legenda/carrega_destaques/todos/3">3</button>
        <button class="ajax" data-href="/legenda/carrega_destaques/todos/4">4</button>
        <button class="ajax" data-href="/legenda/carrega_destaques/todos/5">5</button>
        <button class="ajax" data-href="/legenda/carrega_destaques/todos/6">6</button>
        <button class="ajax" data-href="/legenda/carrega_destaques/todos/7">7</button>
        <button class="ajax" data-href="/legenda/carrega_destaques/todos/8">8</button>
        <button class="ajax" data-href="/legenda/carrega_destaques/todos/9">9</button>
        <button class="ajax right" data-href="/legenda/carrega_destaques/todos/2" rel="next"></button>
</div>

我通过一些研究得出了这段代码:

$("button").on('load',function(){
    var buttonclass = $(this).attr('class');
    var buttonrel = $(this).attr('rel');
    var buttondatahref = $(this).attr('data-href');
    var buttonText = $(this).html();
    $(this).replaceWith("<a class=" + buttonclass + " rel=" + buttonrel + " href=" + buttondatahref + ">" + buttonText + "</a>");
            }
});

我遇到了一些错误,例如最后一个带有 class "java right" 或 "java left" 的按钮,仅保存 "java" 个单词和一些未定义的属性。 这将以某种方式成为 greasemonkey 的用户脚本。 如果有人可以提供帮助或知道一种简单的方法来做到这一点,那就太好了。

我找到了这个解决方案:

function addEventListener(){
    var replacementTag = 'a';
// Replace all a tags with the type of replacementTag
$('div.pagination>button').each(function() {
    var outer = this.outerHTML;

    // Replace opening tag
    var regex = new RegExp('<' + this.tagName, 'i');
    var newTag = outer.replace(regex, '<' + replacementTag);

    // Replace closing tag
    regex = new RegExp('</' + this.tagName, 'i');
    newTag = newTag.replace(regex, '</' + replacementTag);

    $(this).replaceWith(newTag);

});
}