1

要素の後にすべての特定の要素タイプを削除しようとしています<h1>Title</h1>が、まだいくつかの要素タイプを保持しています:

    <h1>Keep</h1>
    <br />
    <label>Keep</label><br />
    <label>Keep</label><br />
    <h1>Title</h1>
    <br />
    <label>Remove</label><br />
    <input type="text" value="remove" /><br />
    <input type="text" value="remove" /><br />
    <label>Remove></label><br />
    <input type="text" value="remove" /><br />
    <p>Remove</p>
    <br />
    <hr />Keep <span>Keep</span>

私の現在のコードは完璧に動作します:

    $('h1:contains("Title")').prev('br').remove();
    $('h1:contains("Title") ~ br').remove();
    $('h1:contains("Title") ~ label').remove();
    $('h1:contains("Title") ~ input[type="text"]').remove();
    $('h1:contains("Title") ~ p').remove();
    $('h1:contains("Title")').remove();  

しかし、私はそれを最も効率的な方法で凝縮する方法を探しています。

を使用$('h1:contains("Title") ~ br, label, input[type="text"], p)すると、これらの要素が選択されるようには見えず、ページ上のこれらのタイプの要素がすべて選択されます。

期待される出力:

<h1>Title</h1>
<hr />Keep <span>Keep</span>
4

2 に答える 2

2

使用nextUntil方法:

$('h1:contains("Title")').nextUntil('hr').remove();

h1要素も削除したい場合:

$('h1:contains("Title")').nextUntil('hr').addBack().remove();

http://jsfiddle.net/ZLHVF/

于 2013-03-06T18:02:08.577 に答える
1

title 要素を jQuery オブジェクトに保存することで、いくつかのセレクターを削除できます。

var title = $('h1:contains("Title")');
$(title).prev('br').remove();
$(' ~ br, ~ label, ~ input[type="text"], ~ p', title).remove();
$(title).remove();

これを示すフィドルがあります(要素を削除する代わりに赤い背景を使用):http://jsfiddle.net/cetNE/

これは非常に簡単な方法であり、コードで何を行っているかを簡単に確認できます。

于 2013-03-06T18:10:09.750 に答える