gpt4 book ai didi

javascript - 多个复选框删除 javascript 中的非共享值

转载 作者:行者123 更新时间:2023-11-30 21:02:54 25 4
gpt4 key购买 nike

所以我有以下问题。

我有一组复选框。第一个描述类别(比如某种业务),并且它们与某些设施相关联。

假设我有

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com