开发者问题收集

未捕获的类型错误:无法在 jquery 中调用未定义的方法“replace”

2013-08-10
2049

我的 javascript 中有一个模板,它将充当“load-more”小部件的 html。我想用从数据库中提取的动态数据替换模板中的某些变量。我试图用动态数据替换特定 div 中的变量“id”。代码如下:

模板:

var likes_template = '<div class="activity_sub_header">You want <span class="stage_name"></span> to play {{Auth::user()->city}}!</div>'
               +'<br>'
               +'<div class="description">'
               +'<div class="activity_body">description ... <a href="/artists/id">See more...</a></div>'
               +'</div>'
               +'<div class="image"><a href="/artists/id"><img src="image_path" alt="" height="80" width="80" class="img-rounded"></a>'
               +'</div>'
               +'<br><br><br>';

动态替换:

for (like in likes){
            // Clone the element
            var $like = $(likes_template).clone();
            $like.attr('id', 'like-' + likes[like].ID);

var $imgId = $like.find('div.image');
            $imgId.html($imgId.html().replace('id', likes[like].id));

}

从代码中可以看出,我试图替换 div class="image" 中的变量“ id ”。但是,运行此代码时,我在标题中收到错误:

Uncaught TypeError: Cannot call method 'replace' of undefined in jquery

我可以用这种方法替换其他变量,但不能替换这个变量。我不确定我做错了什么。谢谢你的帮助!

1个回答

div.image 不是选择器元素的后代。

但它是兄弟元素之一。

您需要使用 filter

$like.find('div.image');

应该是

$like.filter('div.image');
Sushanth --
2013-08-10