2

jsFiddle: http://jsfiddle.net/fH3Sc/

special-text指定された HTML を (変更せずに) 使用して、親または隣接する div のコンテンツ/属性に基づいて各 div の最後のインスタンスを削除するにはどうすればよいですか?

$(".special-text").slice(0, -1).remove();

special-textこれにより、ページ上の divの最後のインスタンスが保持されます。

special-text各divの LAST UNIQUE インスタンスを保持したい。フィドルにさらに div が追加された場合、理想的には、各special-textdiv の LAST UNIQUE インスタンスのみを表示する必要があります。

目標出力: http://jsfiddle.net/JdbTx/

4

5 に答える 5

3

さまざまなテキスト文字列を反復処理し、対応する要素を配列を含むハッシュに格納します。次に、各配列の最後以外の要素を削除します。

var texts = {};
$(".special-text").each(function() {
    var text = $(this).text();
    if(!texts.hasOwnProperty(text)) {
       texts[text] = [];
    }
    texts[text].push(this);
});

$.each(texts, function(text, elements) {
    $(elements).not(":last").remove();
});

jsFiddleデモ

または、1 回の実行でそれを行う Jan の回答に基づく別の方法:

var keepers = {};
$.fn.reverse = [].reverse;
$(".special-text").reverse().filter(function() {
    var text = $(this).text(), include = keepers[text] === true;
    keepers[text] = true;
    return include;
}).remove();
于 2013-02-22T03:41:23.053 に答える
1

あなたが試すことができます

var obj = {};
$('.special-text').each(function(i, v){
    obj[$(v).text()] = true;
});

$.each(obj, function(i, v){
    $('.special-text:contains(' + i + ')').not(':last').remove()
})

デモ:フィドル

ステップ 1 ですべての一意の値を識別special-textし、リストを繰り返し処理して、特殊なテキストに一致する最後のアイテムを除くすべてを削除します。

更新:コメントに記載されているように、私にはいくつかの問題があるため、Jan Dvorak からの回答をお勧めします。

于 2013-02-22T03:33:41.117 に答える
1

ここには特定の CSS セレクターはありませんが、手動で行うことができます。

var keepers = {};

$(".special-text").each(function(){
    keepers[$(this).text()]=this
}).each(function(){
  if(keepers[$(this).text()]!=this){
    $(this).remove()
  }
})

フィドル: http://jsfiddle.net/honnza/fH3Sc/4/

ロジックは次のとおりです。

1) 保持したいすべての投稿を収集します。内容ごとに最大で 1 つ、古いエントリを上書きします (つまり、各投稿の最後のインスタンスのみがリストに残ります)。

2)そのリストに残っていないすべてのエントリを削除します

于 2013-02-22T03:38:10.133 に答える
0

これらの 2 行は、2 番目のフィドルにあるものを再現します。

$(".name:contains('Jessie')").slice(0, 2).next('.special-text').remove();
$(".name:contains('Meowth')").first().next('.special-text').remove();

名前Jessieと名前Meowthは一意ではないため、簡潔な答えを出すのは困難です。

于 2013-02-22T03:30:46.953 に答える
-1
$(".post > .name:contains('Jessie')").nextAll(".special-text").remove();

デモはこちら

于 2013-02-22T03:28:37.447 に答える