3

したがって、名前が存在するかどうかを確認し、存在する場合は、ネストされているスパンタグを削除するこのコードがあります.

<div id="box">
  <br>
  <span style="font-size: 12px">
    <a>
      <span style="color: #000000">
        <b>Name</b>
      </span>
    </a>
  </span>

ただし、名前は次のタグに配置することもできます。

  <br>
  <span>
    <a>Name</a>
  </span>
</div>

jqueryを使用して確認するにはどうすればよいですか? 私はもう試した:

$('span:contains("Name")').remove();
$('span > a > span b:contains("Name")').remove();

何も機能していないようです。

編集#2:私が含めたbrタグもあります。削除されたタグの前にある場合にのみ削除したいと思います。

ありがとう。

4

4 に答える 4

2

filter()テキスト「名前」を含む要素を正確にターゲットにしたい場合に使用できますが、 :contains「他のテキストを含む名前...」などのテキストを含む要素をターゲットにするものではありません。

.load() コールバック関数内にコードを設定する

$('#box').load('myUri', function () {
    $('#box span').has('b, a').filter(function () {
        return $.trim($(this).text()) === "Name";
    }).remove();
});

同等のもの:containsは次のとおりです。

$('#box span').has('b, a').filter(function(){
    return $(this).text().indexOf("Name") != -1;
}).remove();

次のコメントを更新:

$('#box').load('myUri', function () {
     $('#box span').has('b, a').filter(function () {
         var toRemoveSpan = $(this).text().indexOf("Name") != -1 ? true : false;
         if (toRemoveSpan && $('span').prev('br').length) {
             $(this).prev('br').remove()
         }
         return toRemoveSpan;
     }).remove();
 });

これにより、次のようになります。$('#box').empty();

これが希望する動作でない場合は、質問をより具体的にする必要があります。

于 2013-07-03T08:17:09.513 に答える
1

このようなものはどうですか:

$('a:contains("Name"),b:contains("Name")').parents("span").remove();
于 2013-07-03T08:11:45.013 に答える
1

これを試して:

$(function () {
    $('div#box span a span b:not(:contains("Name"))').remove();
})

デモ

于 2013-07-03T08:23:15.630 に答える
1

編集に基づいて、要素がロードされた後にスクリプトを実行する必要があります。

それを行うには、ローディング メソッドのコールバックを使用する必要があります。.load() を使用している場合は、これを呼び出すことができる成功のコールバックがあります。

于 2013-07-03T08:17:41.230 に答える