【发布时间】:2021-12-26 21:55:06
【问题描述】:
我正在尝试创建一个选择下拉过滤器,该过滤器可以从 rest api 动态获取其值和数据。
这是我的代码
HTML
<div class="container">
<select data-filter="season" class="filter_category_name filter form-control"></select>
<div class="listContent" id="listitem"></div>
</div>
JS
var data = [{
"category_name": "1",
"title": "One One",
"more": [{
"details": "some details"
}]
},
{
"category_name": "1",
"title": "One Two",
"more": [{
"details": "some details"
}]
},
{
"category_name": "2",
"title": "Two One",
"more": [{
"details": "some details"
}]
},
{
"category_name": "3",
"title": "Three One",
"more": [{
"details": "some details"
}]
}];
let listItems = "",
categoryAll = "";
for(var i = 0;i < data.length; i++) {
var title = data[i].title,
category_name = data[i].category_name;
listItems += "<a onclick='createAVideoContainer(" + i + ")'><div class='listItem'><p>" + title + "</p></div></div></a>";
if (categoryAll.indexOf("<option value='" + category_name + "'>" + category_name + "</option>") == -1) {
categoryAll += "<option value='" + category_name + "'>" + category_name + "</option>";
}
}
$("#listitem").html(listItems);
$(".filter_category_name").append(categoryAll);
var filtersObject = {};
$(".filter").on("change",function() {
var filterName = $(this).data("filter"),
filterVal = $(this).val();
if (filterVal == "") {
delete filtersObject[filterName];
} else {
filtersObject[filterName] = filterVal;
}
var filters = "";
for (var key in filtersObject) {
if (filtersObject.hasOwnProperty(key)) {
filters += "[data-"+key+"='"+filtersObject[key]+"']";
}
}
if (filters == "") {
$(".listItem").show();
} else {
$(".listItem").hide();
$(".listItem").hide().filter(filters).show();
}
});
但由于某种原因,它隐藏了所有项目,更改选项后没有任何变化
我想先加载所有项目,然后根据选项进行过滤
我希望 select 元素使用类别名称的值动态创建选项,例如第一个选项的值应该是 cars1,并显示具有相同 category_name 的所有其他对象。
注意:整个代码封装在一个异步函数中,该函数在页面加载时呈现。
【问题讨论】:
-
很遗憾,没有足够的信息来帮助...尝试创建一个mcve,以便其他人可以提供帮助。更好的是,看看是否可以创建一个可以在 SO 上运行的stack snippet。
-
@PaulT。不幸的是,我无法创建堆栈 sn-p,但上面的代码包装在异步函数中并在页面加载时呈现。但是我已经更新了这个问题,您能否为我提供任何解决方案以使上述结果成为可能
-
不幸的是,仍然不足以知道......处理的相对html是什么样的?在添加的信息中,
category_name与data[i].categoryOne有什么关系,如果它们完全相关的话?什么定义了data[i].tagOne? -
对不起@PaulT。我的错我已经修复了上面的代码错字我之前在我的代码中定义的常量有点不同。如果仍然有问题,请告诉我,我会尝试安排一个工作示例。
-
嘿@PaulT。这是一个工作小提琴jsfiddle.net/AlkenDester/80qn2ve9/2
标签: javascript jquery