gpt4 book ai didi

javascript - 如何使 Bootstrap 选项卡仅在单击时加载内容,而不是在页面加载时加载

转载 作者:行者123 更新时间:2023-11-28 02:27:40 26 4
gpt4 key购买 nike

我的用例是我编写了一个包含 6 个选项卡的页面。这些选项卡加载我创建的 php 文件索引函数的结果。当我将 USB 驱动器上的文件直接连接到服务器时,一切都很好。在几秒钟内加载页面。但是,我已将文件移动到 NAS 存储驱动器,现在加载页面需要 30-60 多秒。那是因为使用 Bootstrap 选项卡,它会在页面加载时加载所有选项卡。因此它必须在页面加载完成之前加载所有选项卡的所有文件。

我想要做的是让它只加载“当前”选项卡。我知道我可以每次都使用 $POST 并重新加载页面,但老实说,我认为我真正需要做的是使用 AJAX。但我发现的示例令人困惑,我无法调整它们以使其对​​我有用。

这是我想要发生的事情:

  1. 最初加载标签为“空”的页面。从视觉上看,这已经发生了,因为我的“登陆”页面是一条欢迎消息,顶部的选项卡链接到相应的索引。
  2. 单击选项卡时,显示该页面并仅加载该选项卡的文件。通过调用以所需目录为目标并构建文件索引的 PHP 函数来加载文件。所以我想“按需”运行 PHP 函数而不重新加载页面本身。

这是 Bootstrap 选项卡链接的示例:

<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#movies" role="tab">Movies</a>
</li>

我想我需要做的是向这个调用 AJAX 函数的链接添加一个 onclick,然后它会依次调用将在该选项卡上显示的选项卡的 PHP 函数被点击。

这是我当前在一个选项卡中运行的代码:

<?php  
$allowed = array("mp4", "mkv", "avi", "mov", "mpg", "wmv", "flv", "vob");
$excluded = array("jpg", "nfo", "htaccess", "db");
echo php_file_tree("/smb/movies/", "/movies", "https:xxx[link]",$allowed, $excluded);
unset($allowed, $excluded);
?>

考虑将其包装在这样的函数中:

<?php  
function indexmovies() {
$allowed = array("mp4", "mkv", "avi", "mov", "mpg", "wmv", "flv", "vob");
$excluded = array("jpg", "nfo", "htaccess", "db");
echo php_file_tree("/smb/movies/", "/movies", "https:xxx[link]",$allowed, $excluded);
unset($allowed, $excluded);
}
?>

所以,总结一下。我希望页面在加载时只加载 HTML。然后,当单击一个选项卡时,我希望它切换到该选项卡并“按需”加载上述功能。

会想要我想做的工作吗?如果是这样,最好的解决方法是什么?

最佳答案

我为选项卡使用了 Jquery UI。

HTML/ Bootstrap 标签

<div id="tabs">
<ul>
<li><a href="#tabs-1">Tab 1</a>
</li>
<li><a href="#tabs-2">Tab 2</a>
</li>
<li><a href="#tabs-3">Tab 3</a>
</li>
</ul>
<div id="tabs-1">
<p>Content for Tab 1</p>
</div>
<div id="tabs-2">
<p>Content for Tab 2</p>
</div>
<div id="tabs-3">
<p>Content for Tab 3</p>
</div>
</div>

CSS

body {
background-color: #eef;
}
#tabs {
width: 95%;
margin-left: auto;
margin-right: auto;
margin-top: 10px;
}

JQUERY

$("#tabs").tabs({
activate: function (event, ui) {
var active = $('#tabs').tabs('option', 'active');
if(active == '0'){
alert('the tab is 0')
//put your ajax for this tab 0
}
else if(active == '1')
{
alert('the tab is 1')
//put your ajax for this tab 1
}
else if(active == '2')
{
alert('the tab is 2')
//put your ajax for this tab 2
}
}
});

这是 Jsfiddle , 最好的问候。

关于javascript - 如何使 Bootstrap 选项卡仅在单击时加载内容,而不是在页面加载时加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52884516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com