我在一个页面上有多个div,每个div都有以下数据属性:数据一,数据二,数据三,数据四和数据五。下面的代码创建一个filterList
数组如下:['one-value', 'two-value', 'three-value', 'four-value', 'five-value']
取决于在五个下拉列表中选择的值。filterList
阵列的构建正在工作。
然而,有些div具有多个数据属性值,即data-one="one-value,one-value-2,one-value-3"
如果div只包含一个数据属性值,它似乎可以正常工作,但当有多个值被逗号分隔时,它就不起作用了。
任何帮助将非常感谢!
var filterList = [];
jQuery("#jsonFilters ul#one ul li a.active").each(function() {
var dataOne = jQuery(this).attr("data-one");
filterList.push(dataType);
});
jQuery("#jsonFilters ul#two ul li a.active").each(function() {
var dataTwo = jQuery(this).attr("data-two");
filterList.push(dataTwo);
});
jQuery("#jsonFilters ul#three ul li a.active").each(function() {
var dataThree = jQuery(this).attr("data-three");
filterList.push(dataThree);
});
jQuery("#jsonFilters ul#four ul li a.active").each(function() {
var dataFour = jQuery(this).attr("data-four");
filterList.push(dataFour);
});
jQuery("#jsonFilters ul#five ul li a.active").each(function() {
var dataFive = jQuery(this).attr("data-five");
filterList.push(dataFive);
});
if (filterList.length == 0) {
jQuery('.div').removeClass('hidden');
jQuery('.div').fadeIn();
console.log('No Filters');
} else {
jQuery('.div').each(function() {
offeringOne = jQuery(this).attr('data-one');
offeringTwo = jQuery(this).attr('data-two');
offeringThree = jQuery(this).attr('data-three');
offeringFour = jQuery(this).attr('data-four');
offeringFive = jQuery(this).attr('data-five');
if (jQuery.inArray(offeringOne, filterList) != -1 && jQuery.inArray(offeringTwo, filterList) != -1 && jQuery.inArray(offeringThree, filterList) != -1 && jQuery.inArray(offeringFour, filterList) != -1 && jQuery.inArray(offeringFive, filterList) != -1) {
jQuery(this).fadeIn('slow');
} else {
jQuery(this).hide();
}
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div> Now if we just had some HTML here...</div>
1条答案
按热度按时间3yhwsihp1#
由于您的数据属性值包含字符串值,这些值表示由逗号分隔的产品列表,因此您需要将这些值
split
放入数组中,以便您可以将 each 产品值与filterList
进行比较。您可以将
jQuery('.div').each
处理程序重写为如下内容: