如何用 <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);
});
}
<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);
});
}