【发布时间】:2022-01-07 01:22:56
【问题描述】:
我的项目中有 10 个选项卡,每个选项卡都将使用 PHP 从 API 获取一些值。
每次加载页面需要 10-15 秒(因为它会更新所有 10 个选项卡的值)
如何仅在切换标签后加载内容?
在开始时加载 TAB1,然后仅在单击 TAB2 或 TAB3 后 然后加载它们的内容,但不要在开始时加载它们
示例: https://jsfiddle.net/t52mwLoc/
<div class="col-md-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Default Tab</h4>
<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item"> <a class="nav-link active show" data-toggle="tab" href="#tab1" role="tab" aria-selected="true">TAB1</a> </li>
<li class="nav-item"> <a class="nav-link" data-toggle="tab" href="#tab2" role="tab" aria-selected="false"> TAB2</a> </li>
<li class="nav-item"> <a class="nav-link" data-toggle="tab" href="#tab3" role="tab" aria-selected="false"><span class="hidden-sm-up"> TAB3</a> </li>
</ul>
<!-- Tabs -->
<div class="tab-content tabcontent-border">
<div class="tab-pane active show" id="tab1" role="tabpanel">
<div class="p-20">
Load this content... [TAB1]
</div>
</div>
<div class="tab-pane p-20" id="tab2" role="tabpanel">some PHP... Load this ONLY after clicking [TAB2]</div>
<div class="tab-pane p-20" id="tab3" role="tabpanel">some PHP... Load this ONLY after clicking [TAB3]</div>
</div>
</div>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
【问题讨论】:
-
您可以通过将每个选项卡的内容放在其自己的 URL 端点下来实现此目的。然后,您可以在单击选项卡时挂钩
show.bs.tab事件,以发出 AJAX 请求以加载内容。 -
每个选项卡都应该是它自己的页面,如果你想让它看起来像@RoryMcCrossan 建议的那样,它的所有页面都可以做
-
这样的? pastebin.com/raw/fbTpEu15 我是否将我的 PHP 代码添加到数组中?你能给我举个例子吗?
-
标签: javascript php jquery ajax