javascript - 使用 Jquery 和 Ajax 的手风琴列表
问题描述
我正在尝试实现手风琴列表。所以基本上这是一个引导手风琴。手风琴的标题已经由 PHP 设置。当用户单击手风琴时,它必须显示来自服务器的会话列表。我正在为此使用ajax调用,每次单击手风琴时都会出现问题,只有第一个元素会得到结果。其他元素没有得到结果,只是显示了一个空白视图。我对 jquery 还很陌生。这是我的 HTML 代码
<div class="accordion" id="myAccordion">
<?php foreach($modules as $module): ?>
<div class="card">
<div class="card-header" id="headingOne">
<h2 class="mb-0">
<button id="<?php echo $module->id;?>" type="button" class="btn" data-toggle="collapse"
data-target="#collapse<?php echo $module->id; ?>"><?php echo $module->module_name; ?></button>
</h2>
</div>
<div id="collapse<?php echo $module->id; ?>" class="collapse" aria-labelledby="headingOne"
data-parent="#myAccordion">
<div class="card-body">
<ul id="sessionlist" class="list-group list-group-flush">
<li class="list-group-item">
<i class="icon-play_circle_outline text-blue"></i><a href="#">'+data[i].session_name+'</a>' +
</li>
</ul>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
这是我的 Jquery 和 ajax 代码
<script type="text/javascript">
$(document).ready(function () {
$("button").click(function () {
$.ajax({
url: "<?php echo base_url(); ?>dashboard/displaysession/" + this.id,
type: 'GET',
data: {},
error: function () {
alert('Something is wrong');
},
success: function (data) {
for (var i = 0; i < data.length; i++) {
var myhtmlstring = '<li class="list-group-item">' +
'<i class="icon-play_circle_outline text-blue"></i><a href="#">' +
data[i].session_name + '</a>' +
'</li>';
console.log($.parseHTML(myhtmlstring));
$("#sessionlist").append($.parseHTML(myhtmlstring));
}
},
dataType: 'json'
});
});
});
</script>
真的很感谢你的帮助
解决方案
您还需要为您的会话列表提供唯一的 ID。因为当您将 myhtmlstring 附加到 #sessionlist 时,它只需要第一个。
<ul id="sessionlist<?php echo $module->id; ?>" class="list-group list-group-flush">
<li class="list-group-item">
<i class="icon-play_circle_outline text-blue"></i><a href="#">'+data[i].session_name+'</a>' +
</li>
</ul>
然后你可以在你的ajax成功中将它附加到正确的会话列表中:
<script type="text/javascript">
$(document).ready(function () {
$("button").click(function () {
const currentModuleId = this.id
$.ajax({
url: "<?php echo base_url(); ?>dashboard/displaysession/" + currentModuleId ,
type: 'GET',
data: {},
error: function () {
alert('Something is wrong');
},
success: function (data) {
$("#sessionlist" + currentModuleId ).html("");
for (var i = 0; i < data.length; i++) {
var myhtmlstring = '<li class="list-group-item">' +
'<i class="icon-play_circle_outline text-blue"></i><a href="#">' +
data[i].session_name + '</a>' +
'</li>';
console.log($.parseHTML(myhtmlstring));
$("#sessionlist" + currentModuleId ).append($.parseHTML(myhtmlstring));
}
},
dataType: 'json'
});
});
});
</script>
推荐阅读
- python - 在tkinter,python中以像素为单位设置标签宽度
- ruby-on-rails - 测试私有方法的最佳实践
- c# - API IActionResult 结果
- java - 谐波递归
- powerbi - Power BI 小计和总计错误
- r - 如何在 R 中编写函数(类似于 SAS 宏)来导入和格式化 Excel 文件列表?
- python - 使用无服务器存储库中的层使用 Lambda 函数在本地进行测试
- python - 为什么某些元素的 XPath 有时会发生变化?
- php - 在 Laravel 5 中访问文件上传的属性
- swift - SwiftUI - 重新加载/强制视图更新/停止动画