javascript - 在 Laravel 和 Javascript 中选择和取消选择
问题描述
我正在创建一个允许用户使用 Javascript 选择和取消选择多个产品的函数,问题是它只显示一个复选框而不是每个产品都有其复选框。如果我有 20 个产品,它会为第一个产品显示 1 个复选框,我怎样才能解决这个问题?
刀片文件
<span><a class="Select-Deselect" href="">Select</a></span>
@foreach($products as $product)
<div id="checkBox1" style=" display:none; position:absolute;">
<h1>hello</h1>
</div>
@endforeach
Javascript
<script>
/* Select deselect */
$(".Select-Deselect").click(function(e) {
if ($(this).html() == "Select") {
document.getElementById("checkBox1").style.display="block";
$(this).html('Deselect');
}
else {
$(this).html('Select');
document.getElementById("checkBox1").style.display="none";
}
return false;
});
</script>
解决方案
在您的循环中,您再次创建具有相同id
属性的多个 div。删除id
属性并使用 aclass
代替,如上所述,id
属性在文档中必须是唯一的。
<a>
将您的选择/取消选择更改为一个按钮,这更合适:
由于您已经在脚本中使用了 jQuery,我还使用它来切换display
元素的样式。
我删除了id="checkBox1"
并将其替换为class="checkbox-container"
. 使用一个类可以选择多个元素,就是$(".checkbox-container")
这样。
这是一个工作示例:
刀:
<button class="Select-Deselect" type="button">Select</button>
@foreach($products as $product)
<div class="checkbox-container" style="display:none;">
<h1>hello</h1>
</div>
@endforeach
jQuery:
<script>
$(".Select-Deselect").click( function(e) {
if ($(this).html() == "Select") {
$(".checkbox-container").css('display', 'block');
$(this).html('Deselect');
} else {
$(".checkbox-container").css('display', 'none');
$(this).html('Select');
}
return false;
});
</script>
推荐阅读
- java - spring data - mongoDB - 为什么要创建多个对象?
- react-native - 我如何对表格进行分页
- python - 错误:“dagster.core.types.runtime”不是包
- python - TypeError:不能在 Python 中的字节类对象上使用字符串模式
- awesome-wm - 将 awesome.client.iterate 限制为单个标签
- css - 将 css 变量分配给 scss 变量
- node.js - 无法将调试器附加到 Quasar 主进程
- android - 如何在 Google Play 结算中获取我所有应用内商品的 SKU 详细信息
- javascript - Javascript:getElementsByClassName:如何获得唯一的父母
- typescript - 如何解决错误:在 Ionic 3 的 webpackMissingModule 中找不到模块“dns”