美好的一天,
我有我的观点,我正在尝试渲染模板
<div id="template" style="display:none;">
<div class="col-lg-4 col-md-6 col-sm-12">
<div class="thumbnail">
<a href="" class="btn btn-primary btn-sm editar">Editar</a>
<h3 class="centrar"></h3>
<a class="index" href="">
<img class="image" src="" />
</a>
<p class="description">data[i].Descripcion</p>
</div>
</div>
和ajax电话
//ajax starts here...
//....
success: function (data) {
$.each(data, function (index, item) {
var clone = $('#template').clone().html();
console.log(clone);
parent.append(clone);
clone.find('.editar').attr('href', editarUrl + '/' + item.Id);
clone.find('.centrar').text(item.Titulo);
clone.find('.index').attr('href', indexUrl + '?CursoId' + item.Id);
clone.find('.image').attr('src', item.ImagenUrl);
clone.find('.description').text(item.Descripcion);
})
我使用控制台日志来查看变量克隆是否包含html,它确实存在。我的问题是我收到了一条消息&gt;&gt;&gt;发现不是一种功能。
我该怎么办?感谢。
答案 0 :(得分:1)
问题是因为clone
是一个包含#template
元素的HTML的字符串。它不是一个jQuery对象。这就是你得到错误的原因。
要解决此问题,您需要在jQuery对象中引用克隆的内容。您可以使用appendTo()
并存储引用来实现此目的。像这样:
success: function (data) {
$.each(data, function (index, item) {
var html = $('#template').html();
var $clone = $(html).appendTo(parent);
$clone.find('.editar').attr('href', editarUrl + '/' + item.Id);
$clone.find('.centrar').text(item.Titulo);
$clone.find('.index').attr('href', indexUrl + '?CursoId' + item.Id);
$clone.find('.image').attr('src', item.ImagenUrl);
$clone.find('.description').text(item.Descripcion);
});
});