2

コンテンツが動的に入力されるmainWrapがあります(以下のようになります)

          <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>

の直接の子にmainWrapはIDが付加されています。データベースに保存する前にIDを削除したいのですが、今、このようなことを試しました。

        var getContent = $('#mainWrap');  
        var finalContent =getContent.clone().find('*').removeAttr('id');// 1            
        var finalContent=getContent.clone().children().removeAttr('id');//2     
        alert(finalContent.html());

どちらの場合も、次のように出力が得られます。

        <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が削除され、2つではなく1つのdivしか取得されません。しかし、私がそれを独立して試したとき、それは2番目のもので動作します。これがフィドルです

どうすればそれを正しくすることができますか?なぜそれがアプリケーションで失敗し、独立して動作するのかわかりません!
お時間をいただきありがとうございます

4

5 に答える 5

1

これがフィドルです。これがあなたが探しているものだと思います

jsコードは次のとおりです。

$(function(){
  $('button').click(function(){
     $("#wrap").children('div').each(function(){
        $(this).removeAttr('id');
     });
   alert($("#wrap").html());
  });
});
于 2013-01-24T11:12:27.867 に答える
1

あなたを正しく理解しているかどうかはわかりませんが、#mainWrapdivの直接の子のIDを削除するには、次のコードを使用できます。

$('#mainWrap > *').removeAttr('id');

于 2013-01-24T11:04:49.187 に答える
1

親の選択をより具体的にしてみてください。

これを試して:

$(document).ready(function () {
    var getContent = $('#mainWrap');
    var finalContent = $('div.textBox', getContent).clone();

    finalContent.each(function () {
        $(this).removeAttr('id');
    });
    console.log(finalContent[0]);
});

こちらをご覧くださいhttp://jsbin.com/ewosix/1/

 $('button').click(function () {
     var newContent = $(finalContent).first().wrap('<div class="addId" />');
     newContent = $(newContent).parents( /*You can add specific selector for parents like div.textBox or leave it emty for all parents */ ).each(function (index, value) {
         $(this).attr('id', index);
     });
     alert($(newContent).html());
 });
于 2013-01-24T10:56:29.190 に答える
1

使用するeach

各jqueryに役立つヘルプを見つけることができます

finalContent.each(function()
{
    $(this).removeAttr('id')
})

finalContentは複数のdomを持つオブジェクトであるためです。

于 2013-01-24T11:07:04.087 に答える
1

多分これはあなたの問題の解決策です:

var mainWrap = $('#mainWrap').clone();
mainWrap.children().removeAttr('id');

alert(mainWrap.html()); 
于 2013-01-24T11:19:33.077 に答える