0
        <div class="myClass1">
            <span>tesutokana</span>
        </div>
        <div class="myClass2">
            <span>tesutoroma</span>
        </div>
        <div class="myClass1">
            <span>-</span>
        </div>
        <div class="myClass2">
            <span>-</span>
        </div>
        <div class="myClass1">
            <span>-</span>
        </div>
        <div class="myClass2">
            <span>-</span>
        </div>

<span>-</span>クラスmyClass1とからだけのすべてのdivを削除したいmyClass2. 試してみまし.each()たが、ほとんどの場合、呼び出す必要がある関数の引数を使用して、コツをつかむことができないようです。何か助けはありますか?

4

5 に答える 5

2

条件でスパンの内容を比較することでそれを行うことができます。

$('.myClass1, .myClass2').each(function(){
    var mySpan = $(this).find('span');

    if(mySpan.text() == '-'){
        mySpan.closest('div').remove();    
    }
});

実際の例: http://jsfiddle.net/8CNkW/2/

アップデート:

これは、などの-文字列を含むテキストには問題がありません。---test-test

containsぬいぐるみは、他の回答で指定されたオプションよりも 80% 高速です: http://jsperf.com/just-a-demo

于 2013-07-03T16:15:00.740 に答える
2

:contains セレクターを使用する

$("div span:contains(-)").remove();

div 全体を削除します。

$("div span:contains(-)").parent().remove();

JSFiddle

-spanを含むすべての s を削除するため、これは迅速で汚い解決策であることに注意してください。

于 2013-07-03T16:15:35.980 に答える
1

ここに簡単な解決策があります。フィドル

var doc = document.body;
doc.innerHTML = doc.innerHTML.replace(/<div(\s)+(.)*class="myClass(1|2)"(.)*>(\s|\n|\t)*<span>-<\/span>(\s|\n|\t)*<\/div>/ig,'');

ループや外部ライブラリを使用していないため、これが最速のソリューションになる可能性があります。

また

 var j = document.getElementsByClassName('myClass1');
 var t = document.getElementsByClassName('myClass2');
 var x = t.length--;
 while(x--) {
   t[x].innerHTML = t[x].innerHTML.replace(/(<span>-<\/span>)/g,'');
 }
 x = j.length--;

 while(x--) {
   j[x].innerHTML = j[x].innerHTML.replace(/(<span>-<\/span>)/g,'');
 }

フィドル

于 2013-07-03T16:21:05.823 に答える
1

.filter() を使用してフィルタリングを行うことができます。

そのように:

$('.myClass1,.myClass2').filter(function(i, el){ return el.innerHTML.trim() == '<span>-</span>' }).remove()
于 2013-07-03T16:26:13.630 に答える
0

私は使用します.filter()

$('div').filter(function(){
  var $spans = $(this).find('> span');
  return $spans.length === 1 && $spans.text() === '-';
}).remove();

ここに簡単なデモがあります: http://jsfiddle.net/VbpzZ/1/

于 2013-07-03T16:26:03.593 に答える