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ます。取得した html で mainWrap div を返すことも必要です。

これは私がやろうとしたことであり、ある程度働いた:

    $.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その場で に追加できます。の直接の子孫のみを取得するfind("*")ため、使用します。属性の深さに関係なく、すべての属性を削除したいと考えていました。children()getContentid

于 2013-01-25T14:48:41.117 に答える