10

「置換」機能を使用して、div 内の数値以外の値をすべて削除しています。

Jquery replace は最初の要素にのみ影響するようです。

これが私のJqueryです:

$('#comment').each(function() {
    var thz = $(this);
    var repl = thz.html(thz.html().replace(/\D+/g, ''));
});

HTML コード:

<a id="comment1" href="#"> c2fđf011. </a>
<a id="comment1" href="#"> c20ff113. </a>
<a id="comment1" href="#"> c201gf76341. </a>

結果:

2011 c20ff113。c201gf76341.

私が望む結果は次のとおりです。

2011 20113 20176341

4

4 に答える 4

30

重複した ID がありますが、これは無効であり、jQuery ID セレクター (または、ID を持つ要素はほとんどのブラウザーによってインデックス化され、一意であることを意図しているため、jQuery が内部的に使用する document.getElementById のような他の ID セレクター) は、最初のもののみを返します。 DOM に表示されます。クラスに変更して、動作することを確認します。

$('.comment').each(function() { 
     var thz =  $(this); var repl =
     thz.html(thz.html().replace(/\D+/g, '')); 
});

HTML

<a class="comment1" href="#"> c2fđf011. </a> 
<a class="comment1" href="#">c20ff113. </a> 
<a class="comment1" href="#"> c201gf76341. </a>

ちなみにあなたのIDはこんな感じでした:-

<a id="comment1" href="#"> c2fđf011. </a> 
<a id="comment2" href="#">c20ff113. </a> 
<a id="comment3" href="#"> c201gf76341. </a>

属性セレクターで開始すると役立ちます(ただし、これは属性セレクターであり、ID を使用する利点が失われるため、文字通り速度が低下します)。

$('[id^=comment]').each(function() { // While using this better give a container context $('[id^=comment]', 'container').each(function...
    var thz = $(this);
    var repl = thz.html(thz.html().replace(/\D+/g, ''));
});

デモ

道徳: ID は一意でなければなりません

于 2013-06-03T03:50:12.950 に答える
17

HTML ページの ID は一意である必要があります

これが、見つかった要素の最初のインスタンスのみを対象とする理由です。

代わりに要素をクラスに置き換えます

$('.comment').each(function() {
       // Your code
});
于 2013-06-03T03:49:40.377 に答える
8
$('.comment').each(function() { var thz = $(this); var repl = thz.html(thz.html().replace(/\D+/g, '')); });

commentur 要素をクラスのid に置き換えcommentます。

要素で ID を複数回使用すると、セレクターはその ID を持つ最初の要素のみを選択します。

ただし、代わりにクラスを使用すると、セレクターはそのクラスを持つすべての要素を選択します。

于 2013-06-03T03:50:35.657 に答える
4

本当にhtmlを変更したくない場合は、属性ごとにセレクターを使用できます。しかし、他の人が示唆したように、ここでは id の代わりに class を使用するのが最良のオプションです。

$('div[id="comment"]').each(function(){})
于 2013-06-03T03:58:38.440 に答える