使用 Handlebars 和 jQuery 呈现 Bootstrap 下拉列表中的项目
Using Handlebars and jQuery to render items in a Bootstrap dropdown list
所以我试图在下拉列表中显示从 API 调用中获得的项目。我在 Handlebars 文件中有 Bootstrap 下拉菜单,我试图在 jQuery 中使用 forEach 遍历每个项目(教室名称)并将它们显示在下拉菜单中,因此用户可以 select其中一间教室。
这是我在把手中设置的下拉菜单:
<div class="btn-group">
<button type="button" class="btn btn-secondary dropdown-toggle classroom-list-schedule" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Classroom
</button>
<div class="dropdown-menu">
<div class="classroom-dropdown"></div>
</div>
</div>
下面是我用 jQuery 尝试过的两个不同的东西,它们都没有给我我需要的结果:
const classDropdown = function () {
data.classrooms.forEach(function (classroom) {
$('.classroom-dropdown').html('<a class="dropdown-item">' + classroom.classname + '</a>')
})
}
classDropdown()
^ 这只会在下拉列表中显示最后一个教室,而不是每个教室。这确实有意义,因为 jQuery HTML 位于 forEach 函数内部,就好像每次都在重写。
$('.classroom-dropdown').html(function () {
data.classrooms.forEach(function (classroom) {
console.log(classroom.classname)
return '<a class="dropdown-item">' + classroom.classname + '</a>'
})
// return '<a class="dropdown-item">' + 'hi' + '</a>'
})
^ 这个运行控制台日志,但似乎无法识别 return 语句,没有类名输出到下拉列表,可能是因为它是函数内部的函数?但是注释掉的 return 确实 显示,这仍然是一个问题,因为它在 forEach 函数之外。
谁能给我指明正确的方向,哪一个尝试更接近,我可能遗漏了什么?
谢谢!
使用.append()
示例:
$('.classroom-dropdown').append('<a class="dropdown-item">' + classroom.classname + '</a>')
而不是.html()
所以我试图在下拉列表中显示从 API 调用中获得的项目。我在 Handlebars 文件中有 Bootstrap 下拉菜单,我试图在 jQuery 中使用 forEach 遍历每个项目(教室名称)并将它们显示在下拉菜单中,因此用户可以 select其中一间教室。
这是我在把手中设置的下拉菜单:
<div class="btn-group">
<button type="button" class="btn btn-secondary dropdown-toggle classroom-list-schedule" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Classroom
</button>
<div class="dropdown-menu">
<div class="classroom-dropdown"></div>
</div>
</div>
下面是我用 jQuery 尝试过的两个不同的东西,它们都没有给我我需要的结果:
const classDropdown = function () {
data.classrooms.forEach(function (classroom) {
$('.classroom-dropdown').html('<a class="dropdown-item">' + classroom.classname + '</a>')
})
}
classDropdown()
^ 这只会在下拉列表中显示最后一个教室,而不是每个教室。这确实有意义,因为 jQuery HTML 位于 forEach 函数内部,就好像每次都在重写。
$('.classroom-dropdown').html(function () {
data.classrooms.forEach(function (classroom) {
console.log(classroom.classname)
return '<a class="dropdown-item">' + classroom.classname + '</a>'
})
// return '<a class="dropdown-item">' + 'hi' + '</a>'
})
^ 这个运行控制台日志,但似乎无法识别 return 语句,没有类名输出到下拉列表,可能是因为它是函数内部的函数?但是注释掉的 return 确实 显示,这仍然是一个问题,因为它在 forEach 函数之外。
谁能给我指明正确的方向,哪一个尝试更接近,我可能遗漏了什么?
谢谢!
使用.append()
示例:
$('.classroom-dropdown').append('<a class="dropdown-item">' + classroom.classname + '</a>')
而不是.html()