【问题标题】:Append clone() elements with other clone() elements将 clone() 元素附加到其他 clone() 元素
【发布时间】:2015-07-27 09:44:25
【问题描述】:

我正在尝试在使用 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(点击汽车图片)

谢谢!

【问题讨论】:

    标签: jquery append clone


    【解决方案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】:

      因为你从.clone 得到的任何东西都将是对象,而不仅仅是抱怨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】:

      问题是因为您将对象附加到字符串,因此它是隐式强制的,导致字符串为[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');
      

      【讨论】:

        【解决方案4】:

        试试这个:

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

        【讨论】:

          【解决方案5】:

          jQuery 返回一个对象,而不是一个字符串,所以你不能连接它。试试这个:

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

          【讨论】:

            猜你喜欢
            • 2011-03-24
            • 1970-01-01
            • 2014-02-14
            • 2012-10-29
            • 1970-01-01
            • 2017-09-09
            • 2021-10-26
            • 2021-12-26
            • 2015-06-22
            相关资源
            最近更新 更多