javascript - 在页面加载时删除选项卡内容,然后在单击选项卡时添加回来

标签 javascript jquery

我正在使用一个允许其用户使用管理面板的网站,我们可以在加载他们的 DOM 后将 HTML/CSS/Javascript/Jquery 添加到该网站。因为我是用户,所以我无法更改从他们的服务器加载的内容。他们提供了一些选项卡,您可以将内容放入其中,我遇到的问题是所有内容都是用 DOM 加载的,因为我有大量内容,所以网站加载速度有点慢。

我想清空/分离/删除除第一个选项卡之外的所有选项卡内容,即#tab0 和#tabcontent0,然后当我单击其他选项卡时,重新插入内容。

这是现有的 HTML 和它们加载的脚本。我可以通过更改重新加载他们的脚本,或者使用 javascript 或 jquery 对其进行更改。

function show_tab (tab_id) {
   var done = false;
   var counter = 0;
   while (! done) {
      var this_tab_content = document.getElementById("tabcontent" + counter);
      var this_tab = document.getElementById("tab" + counter);
      if (! this_tab_content) {
         done = true;
      } else {
         if (counter == tab_id) {
            this_tab_content.style.display = '';
            this_tab.className = "currenttab";
         } else {
            this_tab_content.style.display = 'none';
            this_tab.className = "";
         }
      }
      counter++;
   }
   location.hash = tab_id;
}

<div id="homepagetabsdiv">
 <ul id="homepagetabs">
  <li class="currenttab" id="tab0" onclick="javascript:show_tab('0');">Main</li>    
  <li class="" id="tab1" onclick="javascript:show_tab('1');">TAB 1</li>    
  <li class="" id="tab2" onclick="javascript:show_tab('2');">TAB 2</li>    
  <li class="" id="tab3" onclick="javascript:show_tab('3');">TAB 3</li>    
  <li class="" id="tab4" onclick="javascript:show_tab('4');">TAB 4</li>    
 </ul>
</div>

<div id="tabcontent0" class="homepagetabcontent"></div>
<div id="tabcontent1" class="homepagetabcontent"></div>
<div id="tabcontent2" class="homepagetabcontent"></div>
<div id="tabcontent3" class="homepagetabcontent"></div>
<div id="tabcontent4" class="homepagetabcontent"></div>

最佳答案

正如您对网站的描述,我不确定您是否有权添加额外的 *.html 文件。如果可以,我建议(正如我在上面对您的问题的评论)将选项卡内容分隔到不同的 html 页面并使用 ajax 加载它们。

如果您不能添加自己的 html 文件,您只能加载 display:none; 中的所有内容并添加一些 ajax loader gif直到所有内容都被加载并在完成加载时将其隐藏。

回到我的第一个建议(假设你有添加文件的权限):

首先,您可以更改 html,以便在一个中央共享位置显示内容:

<div id="homepagetabsdiv">
 <ul id="homepagetabs">
  <li class="currenttab" id="tab0" onclick="javascript:show_tab('0');">Main</li>    
  <li class="" id="tab1" onclick="javascript:show_tab('1');">TAB 1</li>    
  <li class="" id="tab2" onclick="javascript:show_tab('2');">TAB 2</li>    
  <li class="" id="tab3" onclick="javascript:show_tab('3');">TAB 3</li>    
  <li class="" id="tab4" onclick="javascript:show_tab('4');">TAB 4</li>    
 </ul>
</div>

<div id="content" class="homepagetabcontent"></div>

然后,每次点击都会通过以下方式加载并使用新内容更改此中心位置:

 function show_tab (tab_id) {
       $.get("content" + tab_id + ".html", function (data) {
           $("#content").empty().html(data);
       });
 }

您应该添加的新文件例如:

content1.html:

<p>Content 1 example</p>

content2.html:

<p>Content 2 example</p>

等等……

希望对您有所帮助,祝您好运!

关于javascript - 在页面加载时删除选项卡内容,然后在单击选项卡时添加回来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35117624/

相关文章:

javascript - 在 javascript 中的对象扩充期间什么时候应该使用 "prototype"?

javascript - NodeJS posts.findOne(... 返回 404 未找到

javascript - 点击事件未注册

javascript - 在 Javascript/ajax 或 jquery 中提交多个表单

javascript - 如何在每个中捕获 div 高度并在另一个中设置?

jquery 使用数组检查复选框

javascript - 通过 jQuery 或 JS 打开或重定向到 Base64 DataURL

javascript - 请解释一下,将 _ 传递给 js 中的函数是什么意思?

javascript - jQuery 处理虚拟键盘点击事件

javascript - 如何将 HTML 页面加载到 JSP 中的 DIV 中(不加载任何内容)