【问题标题】:Removing id attribute from HTML using jQuery/javascript使用 jQuery/javascript 从 HTML 中删除 id 属性
【发布时间】:2013-01-24 10:48:31
【问题描述】:

我有一个 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 被删除,而不是两个,我只得到 1 个 div。 但是当我独立尝试它时,它可以与第二个一起使用。Here's小提琴

我怎样才能把它弄好。我不知道为什么它在应用程序中失败并独立工作!
谢谢你的时间

【问题讨论】:

  • &lt;/div&gt; 太多了。

标签: php javascript jquery html


【解决方案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());
 });

【讨论】:

  • 要查看打印的内容,请打开浏览器控制台!例如在 Chrome 或 Safari 中是 F12 键
  • 我不能使用类,因为它们每次都不一样。因此我之前用$('div', getContent).clone(); 尝试过。但是当我做console.log(finalContent[0]); 时,我看到了正确的输出,但如果我做一个alert(finalContent.html()); 我在我的问题中得到了输出。为什么会这样?
  • 因为您看到了外部textbox div 的innerHTML。这就是 .html() 返回内部 HTML 的原因。包装两者并获取父 html
  • 所以如果我这样做alert(finalContent.parent.html()),它会给我全部的东西吗?如果错了请纠正,还在学习jquery! :P
  • 如果你 alert(finalContent.parent().html()) 你会得到 body 的内部 html 是 mainWrap 和它的孩子它的全部内容
【解决方案2】:

使用each

您可以找到有用的帮助each jquery

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

因为 finalContent 是具有多个 dom 的对象。

【讨论】:

  • 谢谢你!让它工作!你对我很有帮助!荣誉!干杯!
【解决方案3】:

here 是小提琴。我想这就是你要找的东西

这里是js代码:

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

【讨论】:

    【解决方案4】:

    我不确定我是否理解正确,但要删除 #mainWrap div 的直系子级的 id,您可以使用以下代码:

    $('#mainWrap &gt; *').removeAttr('id');

    【讨论】:

    • 不会每次都是 div !!因此我尝试使用子元素,因为我希望为 mainWrap 的所有子元素删除它们。
    • 看起来你可以使用 * 选择器(我已经在示例文档中尝试过)。我已经更新了我的答案。
    【解决方案5】:

    也许这是您问题的解决方案:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-03
      • 1970-01-01
      • 2020-09-09
      • 1970-01-01
      • 2012-05-12
      • 2012-01-11
      • 1970-01-01
      相关资源
      最近更新 更多