如何在.each()中动态创建唯一对象?

时间:2016-11-21 15:04:10

标签: javascript function object

我在项目列表上运行.each()并在HTML中对这些项目进行分类。在之后的函数中,我正在检查哪些项目被选中(复选框)。在我的函数(prepareTrainings();)中查找检查了哪些框,我需要它来显示.each()的结果中的数据。基本上,如果用户选中了X复选框,则显示该项目的课程名称和URL ...

我的问题:我不确定什么是最佳做法。我应该创建一个对象来将这些值存储在我的i​​f(trainingGroup等)语句中吗?

INSERT INTO sc_trln (doc_ref, doc_type, item, qty, unit, factor, unit_cost, cost_per_unit, item_tot, item_name)
VALUES ('SA/000091', 'SA', '006824', '-2.000', 'PCS   ', '1.000', '0.6446', '0.6446', '-1.2892', 'ALALAI ORANGE JAMS 465GM')

}

1 个答案:

答案 0 :(得分:0)

将处理过的对象保存在全局var中是有道理的。定义例如像这样的对象:

var courses = {};

然后在您的.each函数中,像您一样从HTML元素中提取信息,并将每个结果存储在另一个对象中:

$.each(data.d.results, function(index) { 
    var $this = $(this);
    var course = {}; //Create empty object


    course.name = $this.attr('Title'); 
    course.number = $this.attr('Course_x0020_Number'); 
    course.url = $this.attr('URL'); 
    course.trainingGroup = $this.attr('Training_x0020_Group'); 
    course.recurrence = $this.attr('Recurrence'); 
    course.id = course.name.replace(/\s+/g, '')

    //Store your course by id in the courses object
    courses[course.id] = course;

    //...

稍后检查选中的复选框时,您可以检索每门课程的信息,如下所示:

var checkedIDs = $(":checkbox:checked").map(idSelector).get();
var course = courses[checkedIDs[0]]; //fetches the first selected course

//Now you can do whatever with the data, like print lists...
(...).innerHTML += '<ul class="courseLists"><li><input type="checkbox" id="'+course.id+'"/>'+course.name+course.recurrence+'</li></ul>';

如果不发表评论,我希望我能正确理解你的问题。