JQuery 在不同的类上运行

Posted

技术标签:

【中文标题】JQuery 在不同的类上运行【英文标题】:JQuery running on different classes 【发布时间】:2020-10-04 01:35:01 【问题描述】:

我正在尝试计算用户检查了多少复选框,以便我可以禁用其他输入,以便它进入数据库。我如何在不同的元素上运行 $(" . ") 使用不同类的数组,因为我的表单中有几组输入。

 <script>
                var countChecked = function() 
                var n = $( ".neutral:checked" ).length;
                alert( n + (n === 1 ? " is" : " are") + " checked!" );
                ;
                countChecked();

                $( "input[type=checkbox]" ).on( "click", countChecked );

   </script>

【问题讨论】:

【参考方案1】:

// Count ALL checked boxes.
console.log($(":checked").length)

// Count checkboxes for a set of given classes.
console.log($(".one, .two, .three, .four").filter(":checked").length)

// Or given as array
let targets = [".one", ".two", ".three", ".four"];
console.log($(targets.join(",")).filter(":checked").length)

// or without the dot
targets = ["one", "two", "three", "four"];
console.log($(targets.map(x => `.$x`).join(",")).filter(":checked").length)

// or if you want to do something separately for each class
const handleCheckboxes = (cls) => 
  var n = $(`.$cls:checked`).length;
  console.log(`$n of class $cls $n === 1 ? "is" : "are" checked!`);

  // do even more stuff here
;
targets.forEach(handleCheckboxes);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input class="one" type="checkbox" checked>

<input class="two" type="checkbox" checked>
<input class="two" type="checkbox" checked>
<input class="two" type="checkbox" checked>

<input class="three" type="checkbox">
<input class="three" type="checkbox">

<input class="four" type="checkbox" checked>
<input class="four" type="checkbox">

【讨论】:

我对每个类都有一些输入,我需要返回每个类的选中项的数量,以便我可以从同一个类的表单的其他输入标签中删除禁用。 所以你想单独做一个类列表? 是的,但我需要返回 count var,以便在 if 语句中将其用于此类的其他输入 检查我的建议。 我只需要将选中复选框的数量返回到 php 标记中的 var 中,以便我可以使用它【参考方案2】:

您可以简单地遍历所有类

//Array
var array = ["class1", "class2", "class3", "class4", "class5"];

//Loop
array.forEach((className, classIndex) => 
  var n = $('.' + className + ':checked').length;
  var term = n === 1 ? "is" : "are";
  console.log(n + ' of ' + className + term + ' checked');
); 

【讨论】:

以上是关于JQuery 在不同的类上运行的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JQuery 中添加的类上执行 .click()?

如何让我的类装饰器只在继承链中的最外层类上运行?

jQuery 从同一个元素获取不同的值并将它们用作不同的类

可以在运行时更改 AppDelegate

在 jQuery 中选择一个特定的类

Scala:尝试了扩展方法,但无法完全构造(多个类上的扩展名相同)