【问题标题】:jQuery get checkboxes either checked or have a specific datajQuery获取复选框或选中或具有特定数据
【发布时间】:2021-03-29 06:12:10
【问题描述】:

我有一个包含许多复选框的表单,其中一些具有特定的数据属性(例如data-myname)。现在,单击按钮时,我需要获取checked 或具有data-myname 属性(选中与否)的复选框集合并在$.each(filteredCollection, function(){.....}) 中使用。

我研究过使用 .map 和 .filter,但由于我对这些函数的了解有限,我无法获得要使用的正确条件序列。

任何帮助将不胜感激。

【问题讨论】:

    标签: jquery dictionary checkbox filter selector


    【解决方案1】:

    您可以使用querySelectorAll... 扩展运算符来获取多个条件。

    let el = [...document.querySelectorAll("[type=checkbox]:checked"), ...document.querySelectorAll("[type=checkbox][data-myname]")]
    
    console.log(el)
    
    el.forEach(e => e.nextElementSibling.style.color="red")
    <input type="checkbox" id="1"  value="Bike" data-myname="">
    <label for="vehicle1"> 1</label><br>
    <input type="checkbox" id="2" value="Car" >
    <label for="vehicle2"> 2</label><br>
    <input type="checkbox" id="3"  value="Boat" checked>
    <label for="vehicle3"> 3</label><br> 
    <input type="checkbox" id="3"  value="Boat" data-myname="">
    <label for="vehicle3"> 4</label><br> 
    <input type="checkbox" id="3"  value="Boat">
    <label for="vehicle3"> 5</label><br>

    如果你想使用filter:

    let el = [...document.querySelectorAll("[type=checkbox]")].filter( (e) => {
      if (e.checked || e.hasAttribute("data-myname")) {
        return e
      }
    }) 
    
    console.log(el)
    
    el.forEach(e => e.nextElementSibling.style.color="red")
    <input type="checkbox" id="1" value="Bike" data-myname="">
    <label for="vehicle1"> 1</label><br>
    <input type="checkbox" id="2" value="Car">
    <label for="vehicle2"> 2</label><br>
    <input type="checkbox" id="3" value="Boat" checked>
    <label for="vehicle3"> 3</label><br>
    <input type="checkbox" id="3" value="Boat"  data-myname="">
    <label for="vehicle3"> 4</label><br>
    <input type="checkbox" id="3" value="Boat">
    <label for="vehicle3"> 5</label><br>

    【讨论】:

    • 谢谢...虽然由于其他一些绑定因素我无法直接使用document.querySelectorAll,但我能够根据您的解决方案创建过滤器。标记为已接受的答案
    猜你喜欢
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    • 2012-06-11
    • 2012-02-02
    • 2013-10-29
    • 2021-09-24
    相关资源
    最近更新 更多