Javascript 将数组用作类过滤器,以检查元素是否具有在该数组中找到的类
我知道这听起来有点混乱。 以下是我想做的: 我有五张照片, 每个图片都有一组类, 每次单击其中一张图片时,id(与类名相同)将被推入数组 最后,我只想显示图片,如果它们包含在该数组中找到的相同类(id)Javascript 将数组用作类过滤器,以检查元素是否具有在该数组中找到的类,javascript,jquery,html,arrays,class,Javascript,Jquery,Html,Arrays,Class,我知道这听起来有点混乱。 以下是我想做的: 我有五张照片, 每个图片都有一组类, 每次单击其中一张图片时,id(与类名相同)将被推入数组 最后,我只想显示图片,如果它们包含在该数组中找到的相同类(id) <div id="cameras" class="row text-center "> <div id="d5" class=" professional landscape wedding micro sportaction wildlife portrait as
<div id="cameras" class="row text-center ">
<div id="d5" class=" professional landscape wedding micro sportaction wildlife portrait astrophotographer cameras">
<div class="thumbnail">
<img src="images/d5.png" alt="D5">
</div>
</div>
<div id="d810a" class=" professional landscape astrophotographer portrait micro cameras">
<div class="thumbnail">
<img src="images/d810a.png" alt="D3300">
</div>
</div>
<div id="d810" class=" professional landscape wedding micro portrait cameras">
<div class="thumbnail">
<img src="images/d810.png" alt="D810">
</div>
</div>
<div id="d750" class=" enthusiast landscape wedding micro sportaction wildlife portrait astrophotographer cameras">
<div class="thumbnail">
<img src="images/D750.png" alt="D750">
</div>
</div>
</div>
$('#sportaction').on('click', function () {
if ($("#sportaction").attr('data-click-state') == 1) {
$(this).attr('data-click-state', 0);
$("#snaButton").css({ fill: "#00725C" });
} else {
$(this).attr('data-click-state', 1);
$("#snaButton").css({ fill: "#00A388" })
}
});
$("#finish").click(function() {
$("[data-click-state= '0' ]").each(function () {
type_array.push($(this).attr("id"));
//some.push(this.id);
});
});
$('#sportaction')。在('单击',函数(){
if($(“#sportaction”).attr('data-click-state')==1){
$(this.attr('data-click-state',0);
$(“#snaButton”).css({fill:#00725C});
}否则{
$(this.attr('data-click-state',1);
$(“#snaButton”).css({fill:#00A388})
}
});
$(“#完成”)。单击(函数(){
$(“[数据单击状态='0']”)。每个(函数(){
键入数组.push($(this.attr(“id”));
//some.push(this.id);
});
});
例如:如果我点击“发烧友”和“风景”,只有d750会出现
下面的代码不起作用
$(".cameras").each(function () {
$(this).hide();
for (var i = 0; i < type_array.length; i++) {
if ($(this).hasClass(type_array[i])) {
$(this).show();
}
}
});
$(“.cameras”)。每个(函数(){
$(this.hide();
对于(var i=0;i
我不知道我是否正确理解了您的问题,但试试这个
var type_array = [];
$(".cameras").click(function() {
var classArray = $(this).attr('class').split(/\s+/);
$.each(classArray, function() {
if (this.length > 0 && this != "cameras" && type_array.indexOf(this) == -1) {
type_array[type_array.length] = this + "";
}
})
})
在其他地方:
$(".cameras").each(function () {
$(this).hide();
var clicked = this;
var hasAllClasses = true;
$.each(type_array,function(){
if($(clicked).hasClass(this)){
return true;
}
hasAllClasses=false;
return false;
});
if(hasAllClasses===true){
$(clicked).show();
}
});
type_array=[];
我不知道我是否正确理解了你的问题,但试试这个
var type_array = [];
$(".cameras").click(function() {
var classArray = $(this).attr('class').split(/\s+/);
$.each(classArray, function() {
if (this.length > 0 && this != "cameras" && type_array.indexOf(this) == -1) {
type_array[type_array.length] = this + "";
}
})
})
在其他地方:
$(".cameras").each(function () {
$(this).hide();
var clicked = this;
var hasAllClasses = true;
$.each(type_array,function(){
if($(clicked).hasClass(this)){
return true;
}
hasAllClasses=false;
return false;
});
if(hasAllClasses===true){
$(clicked).show();
}
});
type_array=[];
请显示更多代码,至少单击处理程序。这些图片没有任何类别。“例如:如果我点击“爱好者”和“景观”,应该只显示d750。”所有
.html
中的缩略图元素似乎都有类名“景观”
?谢谢,添加了更多代码请显示更多代码,至少点击处理程序是这样的。这些图片没有任何类别。“例如:如果我单击“爱好者”和“景观”,应该只显示d750。”所有.html
上的缩略图元素似乎都有类名“景观”
?谢谢,添加了更多代码谢谢您的帮助,但是我需要有不止一门课,例如,如果我点击“狂热者和运动行动”,d750是唯一一个有这两个属性的课程。检查谢谢你,苏,对不起,我不知道它是否按照你需要的方式工作,但我现在必须离开,我会稍后回来,所以如果没有其他人帮助你,我会试着在完成后展示所有的图片,而不是我们想要的课程。大学教师;i don’我不知道我是否做错了,请现在检查,但所有图像都将始终可见,因为它们有共同的类“景观”,尝试删除一些类,只留下少数类来检查它是否有效谢谢您的帮助,但我需要能够有多个类,例如,如果我单击“爱好者和运动行动”d750是唯一一款具有这两个属性的机型。谢谢你,苏女士对不起,我不知道它是否按照你需要的方式工作,但我现在必须离开,我稍后会回来,所以如果没有其他人帮助你,我会在完成后试一试。它会显示所有图片,而不是我们想要的课程。大学教师;i don’我不知道我是否做错了什么,请现在检查,但所有图像都将始终可见,因为它们有共同的类“景观”,请尝试删除一些类,只留下一些类来检查它是否有效