2011-02-10 9 views
1

divの内容を別のdivの内容で置き換えようとしています(非表示になっています)。コードは初めてのみ動作しますが、2回目はまったく動作しません。 私はいくつかの記事のタイトルがスクロールしているdivを持っています。私はこれを達成したい:記事のタイトルをクリックするたびに、そのコンテンツ(コンテンツは隠しdivにある)はid = "sreen"の別のdivに表示されます。divの内容をJqueryの別のhidden divの内容に置き換えます。

<script type="text/javascript"> 
//everytime you click the title of an article 

$("a.title").live("click", function(){ 

//replace the content of div screen with the content of an article 

$('div#screen').replaceWith($(this).next('div.content')); 


    }); 

</script> 

答えて

3

.replaceWithを使用すると、効果的にdiv#screenが削除されます。したがって、.html()を使用すると、要素div#screenを維持するためにしたいことになります。

あなたの書式設定が正しく機能していないとお伝えしたので、あなたはdiv.contentにCSSクラスがあると思っています。 div.content.html()を呼び出すと、div.contentのルートノードは除外されます。

<div class="content"> 
<span>some text</span> 
</div> 

$("div.content").html()私の仮定が正しい場合は、任意のデータとイベントを含めるイベントやclone(true)せずに現在のオブジェクトを複製れるclone()を使用して見たいかもしれません<span>some text</span>

を生成します。

var $content = $(this).next('div.content').clone(); 
$content.css("display", "block"); 
$('div#screen').html($content); 

これを行うための別の方法はjsfiddleに.outerHTML

$("a.title").live("click", function() { 
    $('div#screen').html($(this).next('div.content')[0].outerHTML); 
}); 

例を使用するだろう。

+0

+1ため.htmldocs方法を使用し、これはOPの後に何であるかのようです。 –

+0

マークありがとう、私はクローンのアプローチを使用して、それは完全に働いた。はい、私はdivの内容の中にクラスがあります.Gabyの答えは正しいが、私のCSSを変更するように私を導いた。 !!! – olaf36

0

この

<script type="text/javascript"> 

//everytime you click the title of an article 
$("a.title").live("click", function(){ 
    //replace the content of div screen with the content of an article 
    $('div#screen').html($(this).next('div.content').html()); 

    }); 

</script> 
+0

私はあなたのアプローチを試みましたが、それは素晴らしい作品です。しかし、新しいdivに表示されるコンテンツのフォーマットは、私が期待していたものではありません。あなたの答えはおかげです。奇妙なことは、コマンドが再び機能すると、コンテンツは1つの記事につき1回だけ必要な形式で表示されます。 – olaf36

+0

@userです。これは、パラメータとして要素を指定すると、DOMから移動して新しい場所に再挿入されるためです。一度置き換えると、前の要素が上書きされます。 –

+0

@ユーザー、@マークの更新された答えはあなたが最終的に探しているものかもしれません。 –

関連する問題