将clone()元素与其他clone()元素一起追加

时间:2015-05-15 12:49:11

标签: jquery append clone

我试图在用javascript创建的新元素之间附加Clone()元素,如下所示:

var $user_dp = $(this).parent().parent().find('.dp').clone()
var $user_name = $(this).parent().parent().find('.alias').clone()
var $feed_added = $(this).parent().parent().find('.timeago').clone()
var $feed_status =$(this).parent().parent().find('.feed_status').clone()

$('#pop_up_cont #wrap').html('<div>' + $user_dp + $feed_added + '</div><div>' + $feed_status + '</div>')

我得到[object Object][object Object][object Object]而不是元素。 Link(点击汽车图片)

谢谢!

5 个答案:

答案 0 :(得分:1)

问题是因为您将对象附加到字符串,因此它是隐式强制的,从而产生一个[object Object]的字符串。相反,您需要单独append()个对象。试试这个:

var $container = $(this).parent().parent(); // change to closest()

var $user_dp = $container.find('.dp').clone()
var $user_name = $container.find('.alias').clone()
var $feed_added = $container.find('.timeago').clone()
var $feed_status = $container.find('.feed_status').clone()

$('<div />').append($user_dp, $feed_added).appendTo('#wrap');
$('<div />').append($feed_status).appendTo('#wrap');

答案 1 :(得分:1)

当你将字符串与元素连接起来时,对象将被转换为字符串,而这只是"[object Object]",因为toString方法没有特殊的重载来创建HTML代码元件。

您可以创建可以附加的元素,而不是从将再次转换为元素的元素创建字符串:

var div1 = $('<div>').append([ $user_dp, $feed_added ]);
var div2 = $('<div>').append($feed_status);
$('#pop_up_cont #wrap').empty().append([ div1, div2 ]);

注意:如果您要替换内容(与html方法一样),请先使用empty()。如果您想在当前内容之后追加元素,则可以省略empty调用。

答案 2 :(得分:0)

因为从.clone获得的任何内容都是对象而不仅仅是plaint html。因此,您需要append如下所示,而不是将其写为html

$('#pop_up_cont #wrap').append('<div>'+$user_dp+$feed_added+'</div><div>'+$feed_status+'</div>')

<强>更新

简而言之,你可以在下面的一行中完成它:

<强> DEMO HERE

$('.cloneb').on('click',function(){
    $(this).parent().parent().find('.dp,.alias,.timeago,.feed_status').clone().appendTo('#pop_up_cont #wrap');
});

答案 3 :(得分:0)

jQuery返回一个对象,而不是一个字符串,因此你无法连接它。试试这个:

$('#pop_up_cont #wrap')
  .empty()
  .append(
    $('<div/>').append([$user_dp, $feed_added])
    $('<div/>').append($feed_status)
  )

答案 4 :(得分:0)

试试这个:

$('#pop_up_cont #wrap').append('<div>'+$user_dp.html()+$feed_added.html()+'</div><div>'+$feed_status.html()+'</div>')