1

値を追加する方法は次のとおりです。

$('<div>someText</div>').appendTo(self);

そして、これを削除する方法は次のとおりです。

$(self).remove('<div>someText</div>');

追加は機能しますが、削除は機能しません。私は何を間違っていますか?

4

3 に答える 3

1

この関数は、セレクターを使用して、既に一致している要素をフィルター処理し、内部.remove()の要素を一致させないようにします。あなたが欲しいものはこのようなものです:

$(self).find('div:contains(someText)').remove();

これにより、要素内の<div>テキストを含む要素が検索され、削除されます。someTextself

于 2013-02-27T09:10:54.147 に答える
1

API http://api.jquery.com/remove/は、セレクターが必要であると述べています。

試してください$(self).remove('> div'); これにより、divの最初の子が削除されます。

$(self).filter('div:contains("someText")').remove();特定のコンテンツを含むdivを削除したり、div$(self).find('> div').remove();の最初の子を削除したりするために使用できます。

編集:テストせずに投稿した最初のバージョンを削除しました。

于 2013-02-27T09:09:33.940 に答える
0

それはおそらく自己の範囲と関係があります。自分で名前を付けたので、クリックイベントで$(this)を使用してこの変数を取得していると想定しています。その場合、removeメソッドを呼び出したい場合は、同じ関数内からのみ呼び出すことができます。それ以外の場合は、要素を変数に格納するか、要素にアクセスするための別のセレクターを提供する必要があります。

Example:

<div class="div1"></div>

これはクリックイベントのあるdivになります

$(document).ready(function(){
    var self = null;
    $('.div1').click(function(e){
         self = $(this);
         var itemToAdd = '<div>SomeText</div>';
         $(itemToAdd).appendTo(self);
    });
    // to remove it
    // this will remove the text immediately after it's placed 
    // this call needs to be wrapped in a function called on another event
    $('.div1').find('div:contains(someText)').remove();      
});    
于 2013-02-27T09:20:19.397 に答える