$(…).data(…).split不是函数-JQuery

$(…).data(…).split不是函数-JQuery,jquery,Jquery,var$filtercheckbox=$('input[type=“checkbox”]”); $filtercheckbox.on('change',function()){ var selectedFilters={}; $filtercheckbox.filter(':checked')。每个(函数(){ 如果(!selectedFilters.hasOwnProperty(this.name)){ selectedFilters[this.name]=[]; } selectedFilt

var$filtercheckbox=$('input[type=“checkbox”]”);
$filtercheckbox.on('change',function()){
var selectedFilters={};
$filtercheckbox.filter(':checked')。每个(函数(){
如果(!selectedFilters.hasOwnProperty(this.name)){
selectedFilters[this.name]=[];
}
selectedFilters[this.name].push(this.value);
});
//创建包含所有可筛选元素的集合
变量$filteredResults=$('.speaker');
//循环选定的筛选器名称->(数组)值对
$.each(selectedFilters,function(name,filterValues){
//过滤每个。花元素
$filteredResults=$filteredResults.filter(函数(){
var匹配=假,
currentFilterValues=$(this).data('category').split('');
console.log($(this.data('category'));
//循环当前.flower的数据类别中的每个类别值
$.each(currentFilterValue,函数(\uU,currentFilterValue){
//如果当前类别存在于所选过滤器阵列中
//设置匹配为true,并停止循环。因为我们在每个
//过滤器集,我们只需要匹配一次
if($.inArray(currentFilterValue,FilterValue)!=-1){
匹配=真;
返回false;
}
});
//如果matched为true,则返回当前的.flower元素
返回匹配;
});
});
$('.speaker').hide().filter($filteredResults.show();
});
1
2.
3.
样本1
样本2
样本3
使用类似
$(this).data('category').toString().split('')
。出现错误的原因是第二个div只返回
2
,而code正在将值转换为
number
2
。因此,这是一个错误

p.S.您始终可以在运行时放置一个
调试器
并检查值,这将帮助您查找错误

你可以在下面查看

var$filtercheckbox=$('input[type=“checkbox”]”);
$filtercheckbox.on('change',function()){
var selectedFilters={};
$filtercheckbox.filter(':checked')。每个(函数(){
如果(!selectedFilters.hasOwnProperty(this.name)){
selectedFilters[this.name]=[];
}
selectedFilters[this.name].push(this.value);
});
//创建包含所有可筛选元素的集合
变量$filteredResults=$('.speaker');
//循环选定的筛选器名称->(数组)值对
$.each(selectedFilters,function(name,filterValues){
//过滤每个。花元素
$filteredResults=$filteredResults.filter(函数(){
var匹配=假,
currentFilterValues=$(this).data('category').toString().split(“”);
//循环当前.flower的数据类别中的每个类别值
$.each(currentFilterValue,函数(\uU,currentFilterValue){
//如果当前类别存在于所选过滤器阵列中
//设置匹配为true,并停止循环。因为我们在每个
//过滤器集,我们只需要匹配一次
if($.inArray(currentFilterValue,FilterValue)!=-1){
匹配=真;
返回false;
}
});
//如果matched为true,则返回当前的.flower元素
返回匹配;
});
});
$('.speaker').hide().filter($filteredResults.show();
});

1.
2.
3.
样本1
样本2

示例3
请检查
$(this).data('category')
的值。它可能是
null
未定义的。。。它得到了价值,那么什么价值呢?它是
对象
还是
字符串
?你能分享问题中的价值吗?当我进入控制台时,
$(this).data('category')
我得到的只是这个东西'1234568',还有错误…
未捕获的类型错误:$(…).data(…).split不是HTMLLevel的函数。(发言者:2411)在jquery-3.3.1.min.js:2在Function.grep(jquery-3.3.1.min.js:2)在j(jquery-3.3.1.min.js:2)在w.fn.init.filter(jquery-3.3.1.min.js:2)在数组中。(发言者:2408)在Function.each(jquery-3.3.1.min.js:2)在HTMLInputElement。(发言者:2405)在HTMLInputElement.dispatch(jquery-3.3.1.min.js:2)在HTMLInputElement.y.handle(jquery-3.3.1.min.js:2)
+1获取有关添加
调试器
语句,然后查看JavaScript调试器中的变量值的说明。网上发布的许多问题都可以通过调试器解决。我希望OP牢记这一建议,并熟悉浏览器的开发工具。很乐意帮忙!如果您遇到关于DevTools的任何问题,请在此处留言,我很乐意为您提供帮助。