我在单个页面的主体中分散了26行,我需要通过文件的HEAD中的jquery进行更改。
<a href="A">A</a>
<a href="B">B</a>
<a href="C">C</a>
<a href="D">D</a>
<a href="E">E</a>
<a href="F">F</a>
等
我需要制作所有26个实例锚链接。所以我需要他们从'href'改为'name'。我没有权限直接更改正文内容,因此jquery。
http://jsfiddle.net/deekster/ufRxr/5/
(出于演示目的,我手动更正了第一项 - A.使'结果'窗口变小以便看到A锚点工作)。我感谢任何人的回复。
答案 0 :(得分:3)
喜欢这个吗?
$('a[href]').attr('name', function () {
var href = this.href;
return href.substr(href.lastIndexOf('#') + 1);
}).removeAttr('href');
<强> Fiddle 强>
或者
$('a[href]').attr('name', function () {
var href = this.href;
this.removeAttribute('href');
return href.substr(href.lastIndexOf('#') + 1);
});
<强> Fiddle 强>
另一个正则表达式示例:
$('ul a[href]').attr('name', function () {
return this.href.match(/#([^#]*)$/)[1];
}).removeAttr('href');
<强> Fiddle 强>
答案 1 :(得分:1)
这是一个例子:
// select all a element with an href attribute after a ul element
$('ul ~ a[href]').each(function(){
// set the href attribute to name
$(this).attr('name', $(this).attr('href'));
// remove attribute href
$(this).removeAttr('href');
});
请注意,我在ul
之后仅更换了元素。也许你可以使用更好的选择。例如:div.content a[href]
选择具有类内容的div中的所有锚点。
答案 2 :(得分:0)
这应该这样做
$('li a').each(function(){
$(this).attr('name', $(this).attr('href').replace('#', ''));
$(this).removeAttr('href');
});
答案 3 :(得分:0)
我会使用看起来像这样的jQuery函数:
// for every a-tag that has an href attribute
$('a[href]').each(function() {
// get the href attribute
href = $(this).attr('href');
// of the href does not start with '#'
if (href.substr(0,1) != '#') {
// set the value form href to the name attribute
$(this).attr('name', href);
// remove the href attribute
$(this).removeAttr('href');
}
});
我已将解释放在评论中,但请随时询问您是否要我详细说明。
更新的小提琴:http://jsfiddle.net/ufRxr/8/