使用jQuery从HTML属性中收集数据

时间:2015-01-20 18:42:48

标签: javascript jquery

我试图整理一个网络表单,以标明不确定数量的员工是在场还是在场。页面本身包含任意数量的格式div:

<div class="employee" empID="9" presence="0">

divs本身包含选项,其中包含“&#39;存在&#39;根据所选的选项,使用jQuery更改为1或2。

当提交&#39;按下按钮,我想将这些数据转换成一对可解析的数组,其中包含一对“empID”按钮。并且&#39;存在&#39;。我已尝试使用jQuery执行此操作,如下所示:

$('.cic-button').click(function(){
        var submitData = {employees:[]};
        $('firedrill-employee').each(function(){
            submitData.push({
                employeeID: $(this).attr('empID'),
                presence: $(this).attr('presence')
            });
        });
    });

但是,完成此操作后,submitData变量无法填充。知道为什么吗?我是以正确的方式谈论这件事吗?是我试图做的甚至可能吗?

非常感谢。

3 个答案:

答案 0 :(得分:2)

你有一些错误。将您迭代的类放在&#34; employee&#34;的集合上。不是&#34; firedrill-employee&#34;并且不要忘记点以表明它是一个班级。使用employees对象引用submitData数组。您不能将push元素放入对象中。

$('.cic-button').click(function () {
    var submitData = {
        employees: []
    };
    $('.employee').each(function () {
        submitData.employees.push({
            employeeID: $(this).data('empID'),
            presence: $(this).data('presence')
        });
    });
    console.log(submitData);
});

Fiddle

答案 1 :(得分:0)

您需要指定员工数组:

$('.cic-button').click(function(){
    var submitData = {employees:[]}; // employees is an array within submitData...
    $('.firedrill-employee').each(function(){
        submitData.employees.push({ // ...so amend code here to push to the array, not submitData
            employeeID: $(this).attr('empID'),
            presence: $(this).attr('presence')
        });
    });
    console.log(submitData);    
});

参见示例JSFiddle - http://jsfiddle.net/yng1qb6o/

答案 2 :(得分:0)

<强> Js fiddle

$('.cic-button').click(function () {

    var submitData = [];

    $('.employee').each(function () {
        var self = $(this);
        // Create and obj 
        var obj = new Object(); // {};
        obj["employeeID"] = self.attr("empID");
        obj["presence"] = self.attr("presence");

        //push that object into an array
        submitData.push(obj);

        console.log(obj);
        console.log(submitData);
    });
});