【问题标题】:Convert Array to List of Selectors将数组转换为选择器列表
【发布时间】:2021-08-27 11:29:32
【问题描述】:

在将数组(例如“01b,02b,03c”)转换为选择器列表“#01b,#02b,#03c”时需要帮助,我可以将其用作 jQuery 中的选择器列表

HTML

<input type="radio" id="01b"/>
<input type="radio" id="02b"/>
<input type="radio" id="03c"/>

JavaScript

var arr = ['01b','02b','03c'];
// var newArr = would be a list of selectors, like ['#01b','#02b','#03c'];

// then I would use it in the JavaScript to pre-check radio buttons
$(newArr).prop('checked', true);

所以输出会是这样的

<input type="radio" id="01b" checked="checked"/>
<input type="radio" id="02b" checked="checked"/>
<input type="radio" id="03c" checked="checked"/>

我尝试过使用类似的东西

var newArr = arr.each(function() {
 return '#'+ $(this);
});

但似乎远非有效;

【问题讨论】:

  • 为什么不干脆做$(arr).each(function(i) { $("input[id=" + arr[i] + "]").prop("checked", true)})
  • 嗨,谢谢,应该够了,谢谢 :) 我需要先解决我这边的另一个问题。那我试试看。

标签: javascript jquery arrays css-selectors


【解决方案1】:

arr.each 不返回结果。所以,你的例子中的 newArr 是未定义的。

您可以使用 arr.map,它创建新的映射元素数组并将其返回。

const newArr = arr.map(function(el) {
    return '#' + el
})

【讨论】:

  • 嗨,我需要一些时间来处理它。看来我这边还有另一个问题,所以我需要先修复它以测试您的解决方案。
【解决方案2】:

您可以使用map() 将字符串数组从一种格式转换为另一种格式。另请注意,您需要调用 join() 将数组序列化回带有逗号分隔符的字符串,以便在 jQuery 对象中识别它:

var arr = ['01b', '02b', '03c'];
let selector = arr.map(s => `#${s}`).join(',');
$(selector).prop('checked', true);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="radio" id="01b" />
<input type="radio" id="02b" />
<input type="radio" id="03c" />

或者,您可以简单地使用一个类。

【讨论】:

  • 嗨,我需要一些时间来检查一下。看来我这边还有一个问题,所以我需要先修复它以测试您的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-30
  • 1970-01-01
  • 1970-01-01
  • 2015-10-25
  • 2015-02-06
相关资源
最近更新 更多