【问题标题】:how to get data from html5 data attribute, which is in a select list, into an array?如何从选择列表中的html5数据属性中获取数据到数组中?
【发布时间】:2013-03-25 05:32:55
【问题描述】:

我基本上必须通过表单加载上传一些数据,以用于页面上的javascript操作。我正在上传如下数据:

<select id="allrecords">
 <option data-s-type="X" data-n-type="9" value="xxx">xxx</option>
 <option data-s-type="X" data-n-type="9" value="lmn">lmn</option>
 <option data-s-type="X" data-n-type="8" value="xyz">xyz</option>
 <option data-s-type="Y" data-n-type="3" value="zzz">zzz</option>
...
</select>

从这些数据中,data-s-type 和 data-n-type 属性用于找出哪些值将被添加到数组中,该数组稍后将在程序中使用。我想不出使用此选择列表获取该数组的方法。

例如当 data-s-type="X" AND data-n-type=9, array = [xxx,lmn]

我不必将数据作为隐藏选择列表上传,如果您有更好的建议请告诉我。

【问题讨论】:

  • 是否缺少multiple 属性?

标签: javascript jquery html5-data


【解决方案1】:

$.map 创建数组,并在函数内部检查您想要的值,如果它们匹配,您将元素值返回到数组,如下所示:

var arr = $.map($('#allrecords option'), function(el,i) {
    if ($(el).data('s-type') == 'X' && $(el).data('n-type') == '9') 
      return el.value;
});

arr //is now ['xxx', 'lmn']

FIDDLE

【讨论】:

  • 谢谢,这行得通。但是如果我不想使用选择选项来存储数据怎么办?我在哈希中有键值对。我怎样才能把它们放在一个 DIV 元素中,然后根据键值获取某个值?
  • @rajeev - 你可以使用 $.map 基于几乎任何东西创建数组,所以这应该不是问题。对于散列,您需要以某种方式获取这些散列并使用 $.map 函数中的某些内容对其进行过滤,但是如果不查看代码,很难回答什么以及如何回答,并且您最好提出一个关于那,还有一些代码等等。
猜你喜欢
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-13
  • 1970-01-01
  • 2021-07-09
  • 1970-01-01
相关资源
最近更新 更多