find不是函数jquery

时间:2018-04-20 15:36:17

标签: jquery asp.net-mvc asp.net-ajax

美好的一天,

我有我的观点,我正在尝试渲染模板

<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;发现不是一种功能。

我该怎么办?感谢。

1 个答案:

答案 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);
  });
});