使用jQuery / javascript从HTML中删除id属性

I have a mainWrap inside which content is populated dynamically.(It is somewhat like below)

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

The immediate children of mainWrap have an id attached to them.I want to remove the ids before I save it to the database.Now I have tried something like this

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

In both the cases I get the output as follows:

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

The outer div is removed and instead of two I get only 1 div. But When I tried it out independently it works with the 2nd one.Here's the fiddle

How can I get it right.I am not sure why its failing in the application and working independently!
Thank you for the time

douyi0902
douyi0902 编辑!:)
7 年多之前 回复
duanchui1955
duanchui1955 有一个</div>太多了。
7 年多之前 回复

5个回答

Try be more specific in parents selection .

Try this:

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

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

See it here 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());
 });
doumengwei0138
doumengwei0138 如果您想要外部HTML,请执行以下操作:stackoverflow.com/questions/5744207/jquery-outer-html按照此示例,只需使用最外层div #mainWrap的选择器更改#xxx选择器如果您希望内部HTML为ususal $( '#mainWrap')。HTML()
7 年多之前 回复
dpp34603
dpp34603 如果我们关注,我需要一个更多的帮助!! 我怎样才能获得最外层div的HTML。(在mycase #mainWrap中)。我想要删除id的主要或最外面的div。
7 年多之前 回复
duangong937906
duangong937906 是的!!!嗯......这个东西不错! console.log([0])拯救了我的生命和背景你!花了那么多时间来犯一个愚蠢的错误! :非常感谢你!接受并赞成! :)
7 年多之前 回复
doufu9521
doufu9521 如果你警告(finalContent.parent()。html())你将获得body的内部html,它是mainWrap及其子项。它是整个东西
7 年多之前 回复
dpb75177
dpb75177 所以,如果我做警报(finalContent.parent.html())它会给我全部的东西吗?请纠正如果错误,仍然学习jquery! :P
7 年多之前 回复
dreljie602951
dreljie602951 因为你看到了外部文本框div的innerHTML。 这就是.html()返回内部HTML的原因。 换行并获取父html
7 年多之前 回复
du9757
du9757 我不能使用类,因为它们每次都不一样。我用$('div',getContent).clone(); 早些时候。但是当我做一个console.log(finalContent [0]); 我看到了正确的输出,但是如果我做了警告(finalContent.html()); 我在问题中得到了输出。为什么?
7 年多之前 回复
douxiduan8344
douxiduan8344 要查看打印的内容,请打开浏览器控制台! 例如在Chrome或Safari中是F12键
7 年多之前 回复



使用 each </ code> </ p>

您可以找到有用的帮助 每个jquery </ strong> </ p>

   finalContent.each(function()
{
$(this).removeAttr('id')
})</ code> </ pre>

因为finalContent是具有多个对象的对象 dom。</ p>
</ div>

展开原文

原文

Use each

You can find useful help each jquery

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

Because finalContent is object with more than one dom.

duanci19881003
duanci19881003 你永远欢迎兄弟..
7 年多之前 回复
doudan4834
doudan4834 谢谢!有了它的工作!你对我来说是一个乐于助人的人!Kudos!干杯!
7 年多之前 回复
doudu9148
doudu9148 当我执行此操作时,如果我在执行console.log(finalContent [0])时发出警报并更正输出,我会得到与问题相同的输出; 请参阅我对@ Kidwon的回答的评论
7 年多之前 回复



此处是 小提琴。 我认为这就是你要找的东西</ p>

这是js代码:</ p>

  $(function(){
$( 'button')。click(function(){
$(“#wrap”)。children('div')。each(function(){
$(this).removeAttr('id');
};;
alert($(“#wrap”)。html());
});
});
</ code> </ pre>
</ div>

展开原文

原文

here is the fiddle. I think this is what you are looking for

Here is the js code:

$(function(){
  $('button').click(function(){
     $("#wrap").children('div').each(function(){
        $(this).removeAttr('id');
     });
   alert($("#wrap").html());
  });
});

douke3335
douke3335 解决了!谢谢。上传了你的答案!]
7 年多之前 回复

I'm not sure I understand you correctly, but to remove id's of immediate children of #mainWrap div, you can use following code:

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

dongying7847
dongying7847 谢谢@ denis-bu的帮助。工作吧!
7 年多之前 回复
dongsunny1113
dongsunny1113 看起来你可以使用*选择器(我在样本文档中尝试)。 我更新了我的答案。
7 年多之前 回复
doulianglou0898
doulianglou0898 它不会每次都是div!因此我尝试使用子项,因为我希望它们可以为mainWrap的所有子项删除。
7 年多之前 回复



也许这是您问题的解决方案:</ p>

  var mainWrap = $(  '#mainWrap')克隆。(); 
mainWrap.children()removeAttr( 'ID');

警报(mainWrap.html());

</ code> </ pre>
</ div>

展开原文

原文

Maybe this is the solution for your problem:

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

alert(mainWrap.html()); 

dpygo62420
dpygo62420 谢谢你@ rwasik.Resolved it并赞成你的答案!
7 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问