javascript - 使用 jQuery 获取控件属性并创建 json

标签 javascript jquery json jquery-ui checkbox

我在 View 中有多个复选框,每个复选框都有一些数据属性,例如:

enter image description here

单击按钮后,我将遍历所有选定的复选框,我想要做的是获取每个选定复选框的数据价格和值字段并创建 JSON 数组。

这是我到目前为止所拥有的:

var boxes2 = $("#modifiersDiv :checkbox:checked");
            var selectedModifiers = [];
            var modifierProperties = [];
            for (var i = 0; i < boxes2.length; i++) {

                for (var k = 0; k < boxes2[i].attributes.length; k++) {
                    var attrib = boxes2[i].attributes[k];
                    if (attrib.specified == true) {
                        if (attrib.name == 'value') {
                            modifierProperties[i] = attrib.value;
                            selectedModifiers[k] = modifierProperties[i];
                        }
                        if (attrib.name == 'data-price') {
                            modifierProperties[i] = attrib.value;
                            selectedModifiers[k] = modifierProperties[i];
                        }                 
                    }                    
                }
            }
            var jsonValueCol = JSON.stringify(selectedModifiers);

我无法获取每个复选框的值,并且只能获取第一个复选框的值,而且格式不正确,这就是我得到的 JSON:

[null,"67739",null,"1"]

如何获取正确的数据?

最佳答案

您可以使用 $.each 来解析 jquery 数组,例如:

var jsonValueObj = [];
$("#modifiersDiv :checkbox:checked").each(function(){
  jsonValueObj.push({'value':$(this).val(),'data-price':$(this).attr('data-price')});
});
jsonValueCol = JSON.stringify(jsonValueObj);

请注意,通常使用 val() 比 attr('value') 更好。有关此内容的更多信息,请参阅以下线程:What's the difference between jQuery .val() and .attr('value')?

至于你的代码,你最多只有一个答案,因为每次进入循环时你都会覆盖结果。否则没问题(除了格式,但我们不确定您到底想要什么格式)。您能否提供一个您想要的结果的示例?

关于javascript - 使用 jQuery 获取控件属性并创建 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23085520/

相关文章:

javascript - Web Worker - 使用 Bower 打包时如何引用工作文件

jquery - UL 问题的宽度,CSS 宽度不起作用

javascript - 修改 sphider search.php 文件并帮助我

javascript - 如何访问一个 JSON 对象的值,其键是另一个 JSON 对象的值?

javascript - IE 9's Javascript engine (code-named "Chakra 的 ProgId 或 CLSID 是什么”)

javascript - 不可变 - 使用切片更改数组中的元素(无拼接)

javascript - 使用 Javascript 从 2 个数组中提取值并删除重复的 'titles' ...?

javascript - 在 "tap, click"事件触发两次。如何避免呢?

javascript - JSON 对象在控制台中显示对象,但也包含 php 脚本返回的字符串中的 'undefined'

java - 可靠存储复杂 Java 对象层次结构的最佳方法是什么?