0

ファイルの HEAD で jquery を使用して変更する必要がある 1 つのページの本文内に 26 行が散らばっています。

<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 内のすべてのアンカーを選択します。

Jsフィドル

于 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 に答える