首页 > 解决方案 > 在 js 或 Jquery 中恢复 removeAttr

问题描述

我有一个 div 有 800 多个孩子,他们有随机的 ID。我想删除该主 div 中的所有 Id 属性,并在事件发生后将其恢复为默认值。

我曾使用 jQueryremoveAttr()方法删除所有孩子的 ID,但我无法将 Id 恢复为默认值,因为它们有很多元素,我无法使用attr()它们一一添加。

更新 1:
我这样做是因为它是一个 SVG 动画文件,其中包含很多元素,我想在某些事件上触发动画。
一些声明:
主 div 是这样的:

<div id="#mainSVG">
<svg>
<g id="random123"></g>
<g id="random235"></g>
<g id="random183"></g>
and so on ...
</svg>
</div>

和我的 js 文件:

$(document).ready(function () {
$(window).scroll(function () {
  let hT = $('.home-anim-1').offset().top,
    hH = $('.home-anim-1').outerHeight(),
    wH = $(window).height(),
    wS = $(this).scrollTop();
  if (wS > (hT + hH - wH)) {
    $("div #el_hXoVA5SDrei_an_ISJE0y5YL *").removeAttr("id")
  }else {
    $("div #el_hXoVA5SDrei_an_ISJE0y5YL *") I want to bring back all ids that are deleted
  }
  });
})

标签: javascriptjqueryhtmlcss

解决方案


您可以重命名属性以保存它,要恢复您可以在元素中重新设置 Id ...

$(document).ready(function () {
$(window).scroll(function () {
  let hT = $('.home-anim-1').offset().top,
    hH = $('.home-anim-1').outerHeight(),
    wH = $(window).height(),
    wS = $(this).scrollTop();
  if (wS > (hT + hH - wH)) {
    $("div #el_hXoVA5SDrei_an_ISJE0y5YL *").each(function(){
       $(this).attr(savedId:$(this).attr("id")).removeAttr("id")
    });
  }else {
    $("div #el_hXoVA5SDrei_an_ISJE0y5YL *").each(function(){
       $(this).attr(id:$(this).attr("savedId")).removeAttr("savedId")
    });
  }
  });
})

推荐阅读