0

我有 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 锚点的工作)。我感谢任何人的回复。

4

4 回答 4

3

像这样?

$('a[href]').attr('name', function () {
    var href = this.href;
    return href.substr(href.lastIndexOf('#') + 1);
}).removeAttr('href');

小提琴

或者

$('a[href]').attr('name', function () {
    var href = this.href;
    this.removeAttribute('href');
    return href.substr(href.lastIndexOf('#') + 1);
});

小提琴

只是另一个正则表达式示例:

$('ul a[href]').attr('name', function () {
    return this.href.match(/#([^#]*)$/)[1];
}).removeAttr('href');

小提琴

于 2013-07-08T21:54:27.833 回答
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 内的所有锚点。

提琴手

于 2013-07-08T22:02:01.863 回答
0

这应该这样做

http://jsfiddle.net/ufRxr/10/

$('li a').each(function(){
    $(this).attr('name', $(this).attr('href').replace('#', ''));
    $(this).removeAttr('href');
});
于 2013-07-08T21:55:55.010 回答
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/

于 2013-07-08T21:58:30.407 回答