2

HTMLページにほぼ同一のスパンが複数あります

<span class="title">          
 <span class="icon icon-title" title="Title">Title:</span> 
 <a href="LINK_HERE">PAGE_TITLE_HERE</a> remove this
</span>

同じクラスの div と li のページにそのようなものがいくつかありますが、異なるのはLINK_HEREandだけですPAGE_TITLE_HERE

私がする必要がある"remove this"のは、スパンからテキストを削除することです。私がなんとかしたのは、次のような不器用な置換ソリューションです。

('div.content').html($('div.content').html().replace(/remove this/g,' '))

ページ上の単語のすべての出現を置き換え、存在する他のコードで特定の問題を引き起こすため、これにはまったく満足していません. div.content を .title に制限すると、奇妙なことが起こり始めます - 上記のスパンのすべての出現が最初の出現のコピーになります。いえ

1 remove this
2 remove this
3 remove this

になる

1
1
1

おそらく .slice または .trim または .remove またはそれらの組み合わせを使用して、「これを削除する」テキストを削除または非表示にするためのよりエレガントなソリューションを誰かが提案できますか?

前もって感謝します。

4

3 に答える 3

2

要素からテキストを削除したい場合は、contentsandfilterメソッドを使用できます。

$('span.title').contents().filter(function(i){
    if (this.nodeType === 3) {
       $(this).remove()
    }
})

http://jsfiddle.net/LCUea/

于 2012-10-31T06:33:50.680 に答える
0

スクリプトのみに関心がある場合は、次のように使用できます。

$('span.title').each(function(){
    $(this).html($(this).html().replace(/remove this/g,' '));
});​​​​​

更新: ここで動作するデモ: http://jsfiddle.net/LCUea/4/

これで、特定のテキストに関係なく、スパン '.title' 内のラップされていない要素がすべて削除されます。

JS

$('span.title').each(function(){
    //$(this).html($(this).html().replace(/remove this/g,' '));
    var html = '';
    $(this).children().each(function(){
        html += $(this).outerHTML();
    });
    $(this).html(html);
});
于 2012-10-31T06:47:10.937 に答える
0

最も簡単な方法は、 の最後の子を削除するspan.titleことです。必要なテキストがそこにあることがわかっているからです。

http://jsfiddle.net/LCUea/2/

$('span.title').each(function(){
  this.removeChild(this.lastChild);
});​
于 2012-10-31T06:39:50.050 に答える