通过"每个"创建对象并自动命名它们

时间:2014-06-03 13:00:25

标签: javascript jquery object each

我试图"读" dom-elements,然后将它们的一些值存储在Objects中。 它基本上起作用,但我想知道如何正确命名它们(例如根据它们的索引)。我喜欢拥有类似" element0.string"," element1.string"你认为哪种方法正确?

function Element(index, el, height, string) {

    this.el = el;
    this.height = height;
    this.string = string;
    this.index = index;

    }

$(".element").each(function(){

    var el = $(this);
    var height = $(this).height();
    var index = $(this).index();
    var string = "Foobar";

    element = new Element(index, el, height, string);       

    });

alert(element.index);

2 个答案:

答案 0 :(得分:2)

您将使用each方法附带的index参数:

$('.element').each(function(i) {
    // your code
    window['element'+i] = new Element( /* etc. */ );
});

基本上,您将index参数与连接的变量名一起使用。由于全局变量通常属于window对象,因此您可以直接访问window对象并向其添加属性(即您的全局变量)。

修改

正如下面的评论者所说,最好的方法可能是将所有新创建的对象抛出到数组中:

var elements = [];

// your code
    elements.push(new Element());

这将允许您像这样访问每个新对象:

elements[0]; // => your first element

这是一种更常见的方式,看起来更加模块化和干净。

答案 1 :(得分:1)

你在每个函数中都有elem和index

参考this

你应该以这种方式使用

$(".element").each(function(index,elem){


    var height = $(elem).height();

    var string = "Foobar";

    element = new Element(index, $(elem), height, string);       

    });