0


我有一个div动态获取的,它的结构如下。

      <div id="mainWrap">
            <div style="z-index: 1001; height: 407px; width: 328px; top: 150px; left: 601.5px;" id="com-TMRJDOR2KOET3X6JPV6XGU0FB7RGJ926" class="textBox contentBox">
               <div style="" class="editable"><p>
            Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, </p>
               </div>
            </div>

            <div style="z-index: 1002; height: 616px; width: 288px; top: 29px; left: 3.5px;" id="com-UPWTMKZ7OUTN8KG2JEK47LNPN5JO261H" class="textBox contentBox">
               <div style="" class="editable"><p>
            ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum</p>
              </div>
           </div>            
      </div>

现在,我想删除我这样实现的所有孩子的 ID。

      var getContent = $('#mainWrap');
      var finalContent = getContent.clone().children().removeAttr('id');
      var saveContent  = finalContent.parent().html();

但是我得到了没有最外层 div 的内部 div 即mainWrap。我还希望 mainWrap div 在我得到的 html 中返回。

这是我试图做的,在某种程度上起作用:

    $.fn.getOuter = function(val){
      return $('<div class="temp">').append($('#'+val).clone()).html();
    }
    var htmlPage = $.fn.getOuter('mainWrap');

如果我这样做了,alert(htmlPage)我会得到全部内容。但是当我尝试使用它删除 id 属性时,var content=$(htmlPage).children().removeAttr('id');我没有得到正确的 HTML。我仍然只得到里面的孩子mainWrap。我不确定我错在哪里。任何帮助都是赞赏。
谢谢你的时间。

4

2 回答 2

3

问题是因为当您.parent()在最终内容中执行时,没有父元素,因为您已将元素克隆到内存中。相反,将它包装在另一个中div并获得html()它。我也稍微修改了逻辑,试试这个:

var $getContent = $('#mainWrap').clone();
$getContent.children().removeAttr('id');
var saveContent  = $getContent.wrap('<div></div>').parent().html();
于 2013-01-25T14:17:20.937 回答
1

这是一个有效的简单示例(JSFiddle):

<div id="id1">
    <span>some text</span>
    <div id="someid">some more text</div>
</div>

<textarea id="ta"></textarea>

var getContent = $('<div>').append($("#id1").clone());
getContent.find("*").removeAttr("id");
$("#ta").val( getContent.html() );

div您可以即时将克隆的元素附加到 a中。我使用find("*")因为children()只获得getContent. 我假设您想删除所有id属性,无论它们有多深。

于 2013-01-25T14:48:41.117 回答