2010-11-27 11 views
0

$ element.remove()を使用しようとすると、要素がまだDOM内にないために機能しません。私は$ element.html( "")を使用しようとしましたが、それは内側のHTMLのみを削除します。私は全体のオブジェクトをクリアしたいと思います。要素がDOMに追加されたときに私に語ったJQuery問題を削除する

イベントが役立つだろう

編集し、私はそれにelement.remove()を行うことができますので。

編集[OK]を2

、問題に関するいくつかの詳細。 2つのソート可能なリスト(複数の理由で接続されていない)があり、これら2つのソート可能なリストの間で要素を移動する機能が追加されました。しかし、もう一つのリストに要素を追加した後では、IEはそれを元のリストに戻します。

私はアイテムを(移動するのではなく)別のリストにコピーし、古いアイテムを削除すると考えました。しかし、要素がメモリ内にあるため、元のリストはそれを再び追加するだけです。

だから私は、要素をクリアして( ""にする)、空の文字列であるため元のリストに再び追加された場合はマージしないと思ったのです。

多分、この問題の良い解決策がありますか?提案?

+2

DOMにない場合は、なぜそれを消去する必要がありますか? –

+0

IEがdomに要素を追加するのが遅いためです。 Firefoxではすべて期待どおりに動作します。 – Andreas

+0

あなたは、$ element.html( "")がその要素の内部HTMLを削除していると言います。つまり、既にDOM内にあることを意味しています...あなたはどこに問題があるのか​​を絶対に確信していますか? ? –

答えて

0

私がしたことは、attr( "remove"、 "true")でアイテムをマークし、新しいアイテムがドロップされたときに自分の要素を通過し、削除する必要がある人を削除するスクリプトを持つことでした。理想的な解決策ではありませんが、機能します。

1

必要な情報を伝えるのは難しいですが、the .not() methodをお探しですか?これは、渡されたセレクタまたは要素に一致する要素を(最上位で)フィルタリングします。

var str = '<div>a div</div>\ 
     <span>a span</span>\ 
     <p>a paragraph</p>'; 

var $obj = $(str); 

// remove the span before appending 
$obj.not('span').appendTo('body'); 

EDIT:

以下のコメントからは、あなたがしたいかのように思えるのサーバから来る要素のレンダリングを防ぎます。これはjavascriptでは不可能です。 Javascriptは、DOM要素に解析された要素のみを操作できます。これは、あなたのjavascriptがそれを操作する機会がある頃には、すでに表示されていることを意味します。

状況によっては、サーバー側でこれを処理できない場合は、要素のCSSをdisplay:noneに設定してみてください。これは解析されないようにしますが、ページ上に描画されないようにします。

+0

$( "div")で要素を取得した場合、この要素をクリアしたいと思います。 「

」は「」に変わります。 – Andreas

+0

@アンドレアス - あなたがページにレンダリングされないようにサイトに来るようにキャプチャしようとしていると言っているなら、あなたはjavascriptでそれをすることはできません。 Javascriptは、到着し、ロード/解析された要素に対してのみ有効です。したがって、あなたは '.remove()'を使うことができますが、要素が存在するまでは使用できません。このような変更はサーバー側で行う必要があります。 – user113716

0

おそらく.remove().empty()を混同していますか?

DOMに物事を追加するときにIEが遅くなることについては、はい、すべてを一度に追加することでスピードアップを追加する便利なテクニックです。

 
$box = $('#thebox').remove().empty(); 
$box.append(...); 
$box.append(...); 
$box.append(...); 
... 
$box.append(...); 
$('#theparentofthebox').append($box); 

はここでは、.remove() DOMから要素を切り離す以上のように動作します。

+0

ええ、それは最初の問題でした。私は、remove()がオブジェクトをnullまたは等価にし、その後にdomに追加できないと考えました。名前は「削除」よりむしろ「切り離す」べきである。 – Andreas

関連する問題