2

当我试图创建一个完全 100% 动态的 PhoneJS 应用程序时,我遇到了$().append().

我从 JQuery API 参考、其他 SO 和网络上的其他随机文章中看到的每个示例,似乎总是将元素附加并赋予特定 ID。

考虑以下:

HTML

<div id="something"></div>

JS

var tmp = $('<div></div>').SomeKindOfElement(WithSomeKindOfContent);

//People always append this to a specific element like so
$('#something').append(tmp);

如您所见,它被附加到特定的 ID。

现在,如果我不知道需要添加多少元素怎么办?我可以做以下

<div id="something1"></div>
<div id="something2"></div>
<div id="something3"></div>
<div id="something4"></div>
<div id="something5"></div>

遍历我收到的任何项目,并希望添加的元素不超过 5 个。

有没有办法让我添加新元素,而不将它们绑定到我的 HTML 中的特定元素,而只需创建一个新<div>元素?

仅限那些了解 DEVEXTREME 的人

基本上我正在创建一个像这样的dxChart:

$('#chart').dxChart({
    dataSource: [
        { 'Product': 'Pie', 'QTY': 25 },
        { 'Product': 'Chocolate Cake', 'QTY': 12 },
        { 'Product': 'Muffins', 'QTY': 78 }
    ],
    series: { name: 'Test', argumentField: 'Product', valueField: 'QTY'},
    commonSeriesSettings: {
        type: 'bar'
    }
});

但如您所见,我将此图表绑定到<div>标记中的一个元素,该元素的 id 为chart,如下所示:

<div data-options="dxView : { name: 'graph', title: 'graph' } " >
    <div data-options="dxContent : { targetPlaceholder: 'content' } ">
        <h1 class="headline">Dashboard</h1>
        <div id="chart"></div>
    </div>
</div>

但同样,如果我要创建 2 个图表呢?第一个图表将被第二个图表覆盖。

4

3 回答 3

1

您不需要指定 id,调用var node = $("<div></div>")将创建新的 div 元素并将其分配给node变量。然后您可以将节点附加到您想要的位置,例如像这样的主体:node.appendTo(document.body).

于 2015-09-17T09:40:35.563 回答
0

当您创建tmp对象时,它是一个“包装”元素的 jQuery 对象(div在您的情况下)。

此对象在创建时与 DOM 分离,并且在您使用该函数tmp将其注入页面之前,它不会出现在 UI 中。.append(...)

为了将它注入页面,您需要指定“在哪里”注入它,您可以使用任何您希望的选择器来完成,无论是#id.class还是直接使用另一个 jQuery 对象tmp.appendTo(existingElement)

于 2015-09-17T10:01:33.137 回答
0

我得到了 DevExtreme Support 的回复,给出了这个答案:

http://jsfiddle.net/tm481tew/示例演示了如何完成此任务

JAVASCRIPT

$('<div>')
.appendTo('#container')
.dxChart({
    dataSource: [
        { 'Product': 'Pie', 'QTY': 25 },
        { 'Product': 'Chocolate Cake', 'QTY': 12 },
        { 'Product': 'Muffins', 'QTY': 78 }
    ],
    series: { name: 'Test', argumentField: "Product", valueField: "QTY" },
    commonSeriesSettings: {
        type: 'bar'
    }
});

标记

<div id="container"></div>
于 2015-09-17T13:21:03.203 回答