2011-08-08 17 views
0

私は、タブインタフェースを使用して設定されたページを持っています。タブをクリックすると、次の関数が呼び出されます。jQuery toggle()Bug

function DisplayContent(tabname, newobject) //for displaying the content in the tabs 
{ 
    document.getElementById("display").innerHTML = document.getElementById(tabname).innerHTML; //writing from a hidden div on the same page 
    if(!newobject) newobject=document.getElementById('tab'+tabname); 
    if(lastobject) lastobject.className=''; 
    newobject.className='selected'; 
    lastobject=newobject; 
} 

私は、ページ上の特定の要素を切り替えるためのボタンの中に次の関数を使用しています:

onclick="$('.duedate').toggle();" 

私はそうではない場合ボタンをクリックするだけで、すべてうまくいきます。ただし、ボタンをクリックして非表示のコンテンツを表示してからコンテンツを再表示すると、タブを変更するときに問題が発生します。コンテンツは、そのタブに戻ったときに表示されます。私はボタンをクリックしていないのに、なぜこれらの要素が再び現れるのですか?うまくいけば私はいくつかの意味を作った、それは説明するのは難しい問題です。

答えて

3

DOMから非表示の要素を削除し、新しいHTMLで置き換えるためです。スタイルを保持したい場合は、要素も保持する必要があります。 htmlをコピーするのではなく、div35を表示するには.show().hide()を使用してください。

function DisplayContent(tabname, newobject) //for displaying the content in the tabs 
{ 
    $("tabContent").hide(); // hide all the tab content divs 
    $("#" + tabname).show(); // show just the current tab's content div 
    if(!newobject) newobject=document.getElementById('tab'+tabname); 
    if(lastobject) lastobject.className=''; 
    newobject.className='selected'; 
    lastobject=newobject; 
} 

これが機能するために、すべてのコンテンツは、「tabContent」のクラスをdivを与える、と右のあなたの<div id="display"></div>後にそれらを置く

+0

はい、あなたはいつもあなたのHTMLを "表示"にコピーして上書きします。 –

+0

私はこれが起こっていると思っていましたが、私はこの問題を解決するために私のCSSにいくつかの変更を加えなければなりません。ありがとうございました! – muttley91

+0

この書き換えに隠されるのではなく、コンテンツがデフォルトで表示される理由が混乱していますが... – muttley91