作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我有以下问题。
我有一组复选框。第一个描述类别(比如某种业务),并且它们与某些设施相关联。
假设我有
Restaurant: Parking, Free WIFI
Hotel: Venues, Parking, Free WIFI, Lunch, Drinks
Bar: Parking, Drinks
我将此信息保存在一个我可以访问的名为 typeFacilitiesLinks
{Restaurant: ["Parking", "Free WIFI"],
Hotel: ["Venues", "Parking", "Free WIFI", "Lunch", "Drinks"],
Bar: ["Parking", "Drinks"]}
因此,当我选中餐厅复选框时,会显示 parking 和免费 WIFI 复选框。当我单击 Bar Drinks 时,将显示。
var checkedArrayFacilities = [];
$(document).on('click', '.industry-checkbox', toggleFacilitiesShow);
function toggleFacilitiesShow(e) {
var $this = $(e.currentTarget);
var checkedIndustry = $this.val(); // E.g. Restaurant
var $facilitiesContainer = $('.facilities_container');
if ($this.is(':checked')) {
var index = checkedArrayFacilities.indexOf(checkedIndustry);
if (index > -1) {
checkedArrayFacilities.splice(index, 1);
} else {
checkedArrayFacilities.push(checkedIndustry);
}
for (var el in typeFacilitiesLinks) {
if (typeFacilitiesLinks.hasOwnProperty(el)) {
if (el === checkedIndustry) {
$facilitiesContainer.find('.check-facility').each(function(){
var $input = $(this);
if ( $.inArray( $input.val(), typeFacilitiesLinks[checkedIndustry] ) !== -1 ) {
$input.parents('.single_check').addClass('show');
$facilitiesContainer.removeClass('hidden');
}
});
}
}
}
}
}
这很好用。我想不通的是如何删除这些设施,但只有那些在其他设施中没有重复的设施。想象一下,我检查了所有三个业务。我展示了他们所有的设施。现在,如果我删除餐厅,应该不会有任何改变,因为酒店有免费 WIFI, parking 场和酒吧也有 parking 场。
但是如果我选中了 Restaurant 和 Bar 并删除了 Bar,我应该只会丢失 Drinks 复选框,而不是 Parking 复选框。
我检查的选项越多,显示的设施越多,这种关系就越复杂:S
解决此问题的最佳方法是什么?我得到的只是从选中的选项中删除设施,这并不好。
最佳答案
如果您重置 typeFacilitiesLinks
并在每次选中复选框时根据当前选中的复选框完全重新计算设施,它应该可以解决您的问题。
关于javascript - 多个复选框删除 javascript 中的非共享值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46943518/
我是一名优秀的程序员,十分优秀!