gpt4 book ai didi

javascript - 通过 javascript 动态添加 HTML

转载 作者:行者123 更新时间:2023-12-02 16:05:46 25 4
gpt4 key购买 nike

美好的一天,

我正在开发一个 ASP.NET MVC 应用程序,并且有一个包含一行数据的部分 View 。

<div class="row paymentRow">
<div class="col-xs-4">Additional Invoices</div>
<div class="col-xs-8"><input type="text" style="width: 100%"/></div>
</div>

我有一个按钮,单击该按钮时,它会在带有“row paymentRow”类的最后一个 div 之后向 DOM 添加额外的行。

<div class="btn-group" role="group" aria-label="...">
<button type="button" id="Add">Add Row</button>
<button type="button" id="Ok">Ok</button>
<button type="button" id="Cancel">Cancel</button>
</div>

添加附加行的 jQuery 有效:

$(function() {
$("#Add").click(function(e) {
e.preventDefault();

var row = '<div class="row paymentRow">' +
'<div class="col-xs-4">&nbsp;</div>' +
'<div class="col-xs-8"><input type="text" style="width: 100%"/></div>' +
'</div>';

$("div.modalUploadWidth div.row:last").after(row);
});
});

我的问题是:

是否有一种更简洁的方法来表示动态构建并分配给行的 HTML?我不太喜欢这样的魔法弦。不仅如此,还会有多个实例需要将 javascript 注入(inject) DOM。

我知道我可以将字符串放入资源中并从那里访问它。我还知道 Handlebars 可以通过将 javascript 模板存储到外部文件中并将外部文件的内容绑定(bind)到 DOM 来实现此目的。

我正在尝试寻找我可能忽略的替代方案。

TIA,

科森

最佳答案

KnockOut JS 这样的客户端绑定(bind)库更适合在客户端制作动态控件。这是一个简单的 Knockout JS 示例 - https://dotnetfiddle.net/fmwTtJ

<!DOCTYPE html>

<html lang="en">
<head>
<!-- JS includes -->
<script src="//code.jquery.com/jquery-2.1.4.min.js"></script>
<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
<script src="//ajax.aspnetcdn.com/ajax/knockout/knockout-3.1.0.js"></script>
</head>

<table>
<thead>
<tr>
<th>Last Name</th>
<th>First Name</th>
</tr>
</thead>
<tbody data-bind="foreach: persons">
<tr>
<td><input data-bind="value: LastName"/></td>
<td><input data-bind="value: FirstName"/></td>
</tr>
</tbody>
</table>
<button data-bind="click: $root.addPerson ">Click</button>
<script>
var ViewModel = function() {
var self = this;
self.persons = ko.observableArray([]);
self.addPerson = function(){
self.persons.push(new Person('Last Name','First Name'));
};
}

var Person = function(lastName, firstName) {
var self = this;
self.LastName = ko.observable(lastName);
self.FirstName = ko.observable(firstName);
};

vm = new ViewModel()
ko.applyBindings(vm);
</script>
</html>

当您单击该按钮时,它将添加一个新行 -

enter image description here

关于javascript - 通过 javascript 动态添加 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30765014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com