Jquery / JS - 为每个Div动态创建对象

时间:2014-04-14 06:03:09

标签: javascript jquery html javascript-objects

2年后的评论

这是我以前的一篇帖子。基本上,我想通过带有字符串参数的函数用动态名称创建变量,并且变量存储在全局在函数范围之外,以后可以通过任何其他函数访问

但是因为我不知道“全球”这个术语。所以,我很难解释。

享受!


Backstory:所以我想为自己的界面网页构建一个JS库。结果是,如果我在<div class="window SOMENAME"></div>中添加div#Environment。该网页将生成一个工作窗口。我已经完成了。

必须声明某些JS对象才能使其正常工作

window["window" + winname].bmaxheight = $(cwindow).height();

,所以如果我添加一个新窗口&#34; .window.s&#34;

<div class="window s">
    <!--Each window(`div`) REQUIRES a `.window` class and a unique name(here, ".s"), there WILL be ONLY 2 classes.-->
    ...
</div>

,我必须手写以下object声明。

windows = new Object();
windows.bmaxwidth = 0;
windows.bmaxheight = 0;
windows.bmaxpositionx = 0;
windows.bmaxpositiony = 0;
//Each new window(`div`) REQUIRES a new object named with the string "window" and the name(here, "s") appended.

那么如何为循环中object(窗口)的每个新手动输入生成新的JS div 动态?< / p>

意思是,如果我只是在

中输入
<div class="window SOMENAME"></div>

,它将自动声明对象

windowSOMENAME = new Object();
windowSOMENAME.bmaxwidth = 0;
windowSOMENAME.bmaxheight = 0;
windowSOMENAME.bmaxpositionx = 0;
windowSOMENAME.bmaxpositiony = 0;

概念:

function loop() {
   1.check all divs within $("#Environment") and make an array of names for new objects(above are "s" and "SOMENAME")(no problem)
   2.generate new objects in a loop ("window" + "NAME" and declare bmaxwidth, bmaxheight...)
}

如果需要更多信息,请发表评论。

2 个答案:

答案 0 :(得分:0)

如果你想为HTML添加一个新的CSS类,可以使用以下命令(jQuery) var cssClass = $('<style>body { background: blue; }</style>') $('html > head').append(cssClass); 这将创建cssClass并将其附加到head标记。

动态创建元素的方式与$(<<html>>)相同。

你应该考虑在jQuery中创建一个插件来完成这项任务。它会简化整个过程。

答案 1 :(得分:0)

我可以使用其他语法来访问变量。因为全局变量存储在window

window["SOMENAME"] = new Object();

它也适用于

中的变量
var k = "SOMENAME"
window[k] = new Object();

2年后编辑

更好的方法是最初和全局创建一些空对象,然后使用相应的&#34;动态变量&#34;填充它们。通过这种方式,可以更好地组织数据,而不是将所有内容转储到window下。

示例:

var fruitBasket = {};

function addFruit(name, fruitProperties) {
    /*Maybe some logics to determine whether the fruit already
      exists in the basket to make this function more useful
      than simply fruitBasket.SOMENAME = {SOMEOBJECT}*/
    fruitBasket[name] = fruitProperties;
}

function getFruit(name) {
    return fruitBasket[name];
}

addFruit("apple", {
    color: "red",
    growsOnTree: true
});

getFruit("apple");

或者你甚至可能想要更好地组织它:

var fruitBasket = {
    storedFruits: {},
    addFruit: function(...) {...},
    getFruit: function(...) {...}
};