我在div
中有一个卡片列表,类名为.cards-list
,我希望使用复选框按数据属性筛选这些卡片
我尝试了下面的jQuery代码,但它不工作,在选中复选框后,我的所有卡片都被隐藏,并且当我取消选中它时不会再次显示
HTML
<!-- FILTER CHECKBOX -->
<div class="form-check">
<input class="cardCheckBox" type="checkbox" value="foo">
</div>
<div class="form-check">
<input class="cardCheckBox" type="checkbox" value="xyz">
</div>
<!-- CARDS LIST I WANT TO FILTER -->
<div class="cards-list mt-2">
<div class="card" data-category="foo">
<div class="card-body">
<h2>card title</h2>
</div>
</div>
<div class="card" data-category="xyz">
<div class="card-body">
<h2>card title</h2>
</div>
</div>
<div class="card" data-category="foo">
<div class="card-body">
<h2>card title</h2>
</div>
</div>
</div>
jQuery
$(".cardCheckBox").change(function () {
var value = $(this).val();
if (this.checked) {
$(".cards-list.card").filter(function () {
$(this).toggle($(this).data("category") == value);
});
} else {
$(this).toggle($(this).data("category") == value);
}
});
你犯了几个错误。
在if
语句中需要this.checked==true
。 this.checked
提供true
和false
,您需要指定要查找的内容。
也不需要过滤器,你可以在你的元素选择器中做过滤(女巫也不是正确的目标):
$(".cards-list .card[data-category="+value+"]")
如果您将.cards-list.card
放在一起,则表示它们彼此相邻,在您的示例中,.cards
位于.cards-list
内部。
null
$(".cardCheckBox").change(function () {
var value = $(this).val();
//console.log(value);
if (this.checked == true) {
//console.log(true);
$(".cards-list .card[data-category="+value+"]").hide();
}else{
$(".cards-list .card[data-category="+value+"]").show();
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- FILTER CHECKBOX -->
<div class="form-check">
<input class="cardCheckBox" type="checkbox" value="foo">
</div>
<div class="form-check">
<input class="cardCheckBox" type="checkbox" value="xyz">
</div>
<!-- CARDS LIST I WANT TO FILTER -->
<div class="cards-list mt-2">
<div class="card" data-category="foo">
<div class="card-body">
<h2>card title foo</h2>
</div>
</div>
<div class="card" data-category="xyz">
<div class="card-body">
<h2>card title xyz</h2>
</div>
</div>
<div class="card" data-category="foo">
<div class="card-body">
<h2>card title foo</h2>
</div>
</div>
</div>
代码说明:
null
// Cache your elements
const $cards = $("[data-category]");
const $cardsCkb = $(".cardCheckBox");
$cardsCkb.on("change", function() {
// Create an Array of checked values
const checkedArr = $cardsCkb.filter(":checked").get().map(el => el.value);
// Show all and exit if no filter is active
if (!checkedArr.length) return $cards.removeClass("is-hidden");
// Finally, use jQuery's .toggleClass() and JS's Array.prototype.includes()
$cards.each(function() {
const category = $(this).data("category");
$(this).toggleClass("is-hidden", !checkedArr.includes(category));
});
});
.card.is-hidden {
display: none;
}
<!-- FILTER CHECKBOX -->
<div class="form-check">
<label><input class="cardCheckBox" type="checkbox" value="foo"> foo</label>
</div>
<div class="form-check">
<label><input class="cardCheckBox" type="checkbox" value="xyz"> xyz</label>
</div>
<!-- CARDS LIST I WANT TO FILTER -->
<div class="cards-list mt-2">
<div class="card" data-category="foo">
<div class="card-body">
<h2>foo 1</h2>
</div>
</div>
<div class="card" data-category="xyz">
<div class="card-body">
<h2>xyz 1</h2>
</div>
</div>
<div class="card" data-category="foo">
<div class="card-body">
<h2>foo 2</h2>
</div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
首先,我试图使选择所有复选框,如果我单击表头中的选择所有复选框,整个表行将选择并显示一个复选框反向消息,即我选择了多少复选框。这里的问题是,如果我单击select all复选框,反向消息不会显示楼上的表,即我选择了多少行。 其次,如果我从任何列中筛选任何数字,相同的数字将显示同一列中有多少行具有相同的数字。如果我选中了所有复选框,那么反向消息将显示我选中了多少行复选框。这里,问题是显示整个表行计数
我一直在研究这个问题,但我找不到一个带有复选框的get drawable的解决方案。我试图做的是,当你点击这个特定的复选框时,它会过滤相应颜色的复选框。顺便说一下,这是一个片段。所以,我有可以是红色、黄色或绿色的复选框。如果用户点击它们,它会改变颜色。例如,我有一个黄色的复选框,它是chkProgress,当它被单击时,我想找到所有黄色的复选框,并筛选黄色的复选框。所以,我有可绘制的ID,我需要得
问题内容: 我有两行复选框。当用户单击任何单个复选框(在特定行中)时,我想在PHP的总和中添加一个数字。如果他取消选择单个复选框,那么我想实时地从总数中减去而不刷新页面。 我的问题是我的AJAX调用的数据字段中有什么内容? 这是正确的方法吗? HTML JQUERY PHP 问题答案: 尝试:
问题内容: 我有一个带有很多表单字段(12 xn行)的表单。每行中的第一个字段(代表产品)是一个类似于以下内容的复选框: 每个复选框的值都是唯一的。 我正在尝试将检查后的值发送到PHP脚本以通过Ajax进行处理。我遇到的问题是将ID正确获取到服务器。我尝试使用以下几种方法: 和 但是这些都会导致在服务器上获取此信息: 我可以序列化整个表单并将其发送过来,但是这可能导致发送的许多数据将不被使用。 如
问题内容: 我想从MYSQL数据库中删除多行。我已经创建了这个delete.php文件,以选择各种链接并使用复选框将其删除。 这似乎没有删除任何行。我的数据填充在表中。我猜问题出在PHP代码上。请帮我在这里。 问题答案: 您应该将其视为这样的数组, 只有这样,您才能对其计数并循环删除。 您还需要将数据库连接传递给查询。 您的没有包括:
问题内容: 我目前正在使用一个必须能够选中/取消选中复选框的系统。每当它更改状态时,我都需要进行jquery并调用ajax来更新页面。 我的问题是-我该怎么做,以便更新? 提前致谢。 问题答案: 例如,您可以这样做: 首先,您必须查看该复选框是否已选中: 您可以通过Ajax加载特定的内容:
问题内容: 我想做这样的事情来使用 jQuery 打勾: 要么 这样的事情存在吗? 问题答案: 现代jQuery 用途: DOM API 如果只使用一个元素,则始终可以访问底层元素并修改其属性: 使用and 方法代替此方法的好处是它们将对所有匹配的元素进行操作。 jQuery 1.5.x及以下 该方法不可用,因此您需要使用。 请注意,这是jQuery 1.6版之前的单元测试所使用的方法,并且比使用
问题内容: 我需要有关jQuery选择器的帮助。假设我有一个标记,如下所示: 除了用户单击时,如何获取所有复选框? 问题答案: 一个更完整的示例适用于您的情况: 当被点击复选框,该复选框的状态进行检查,并在当前形式的所有复选框被设置为相同的状态。 请注意,您无需从选择中排除该复选框,因为该复选框的状态将与其他所有复选框相同。如果出于某些原因确实需要排除,则可以使用以下方法: