gpt4 book ai didi

jquery - 在追加到 DOM 之前更改 jQuery 模板的 HTML

转载 作者:行者123 更新时间:2023-12-01 01:29:26 24 4
gpt4 key购买 nike

我在使用 jQuery 模板时遇到问题,就像使用普通 jQuery DOM 对象一样。在将模板函数创建的 HTML 添加到 DOM 之前,我需要更改它。
下面示例中的注释解释了我想要做什么以及哪里出了问题。

 <script id="movieTemplate" type="text/x-jquery-tmpl">
<tr class="week_${week}">
<td colspan="6">Vecka: ${week}</td>
</tr>
<tr class="detail">
<td>Kund: ${customer}</td>
<td>Projekt: ${project}</td>
<td>Tidstyp: ${time_type}</td>
<td>Datum: ${date}</td>
<td>Tid: ${quantity}</td>
<td>Beskrivning: ${description}</td>
</tr>
</script>


<script type="text/javascript">
var movies = [
{ customer: "SEMC", project: "Product catalogue", time_type: "Programmering", date: "2010-11-08", quantity: 2, description: "buggar", week: 45 },
{ customer: "SEMC", project: "Product catalogue", time_type: "Programmering", date: "2010-11-09", quantity: 3, description: "buggar igen", week: 45 }
];
$("#movieTemplate").tmpl(movies).appendTo("#movieList");

$("#btnAdd").click(function () {
//hash with data
var data = { customer: $("#clients").val(), project: $("#projects").val(), time_type: $("#timeTypes").val(), date: $("#date").val(), quantity: $("#quantity").val(), description: $("#description").val(), week: $("#week").val() }

//do the templating
var html = $("#movieTemplate").tmpl(data).find(".week_" + data.week).remove().appendTo("#movieList");
console.log(html.html()); //Returns null. WHY?!

var html = $("#movieTemplate").tmpl(data).appendTo("#movieList");
console.log(html.html()); //Returns the first <tr> only. But appends the full html correctly
return false;
});
</script>

最佳答案

您正在附加删除的元素,如果您想删除该元素,然后附加剩下的内容,您需要使用 .end()跳回到链中,如下所示:

var html = $("#movieTemplate").tmpl(data).filter(".week_" + data.week).remove()
.end().appendTo("#movieList");

目前您正在调用.html()在删除的行上,因为这两行都位于对象的根级别并且 .html()返回第一个匹配元素的内容。

总体而言,更好的替代方案是在它安全地进入 DOM 后对其进行处理,如下所示:

var html = $("#movieTemplate").tmpl(data).appendTo("#movieList")
.filter(".week_" + data.week).remove();

You can test it out here .

关于jquery - 在追加到 DOM 之前更改 jQuery 模板的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4153668/

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