jQuery toggle()Bug

时间:2011-08-08 20:28:53

标签: javascript jquery html css

我有一个使用标签界面设置的页面。单击选项卡时,将调用以下函数:

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();"

如果我根本没有点击按钮,一切都很好。但是,如果我单击按钮以显示隐藏的内容,然后重新隐藏内容,则在更改选项卡时会出现问题 - 当我再次返回该选项卡时,内容会返回显示。为什么这些元素再次出现,即使我没有点击按钮?希望我有所了解,这是一个难以描述的问题。

1 个答案:

答案 0 :(得分:3)

因为您要从dom中删除隐藏的元素并将其替换为新的HTML。如果要保留样式,还必须保留元素。使用.show().hide()显示您的div,而不是复制html。

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;
}

为了实现这一点,请为您的所有内容div提供一个“tabContent”类,并将它们放在<div id="display"></div>之后。