防止创建特定的HTML元素

时间:2015-05-16 15:32:31

标签: javascript jquery html dom

想象一下:我知道有时会创建一个id="cats"的元素,但我不知道什么时候。

我可以删除已经存在的元素:

document.getElementById('cats').style.display = 'none';

但有没有办法阻止该元素在它存在之前,所以它永远不会被创建?或者在创建后立即检测并删除它? (纯JavaScript答案有优势)

重要说明:我无法编辑CSS

3 个答案:

答案 0 :(得分:5)

为什么不简单地将它隐藏在你的css中,而不是阻止正在创建的元素?

#cats { display:none }

答案 1 :(得分:0)

如果您想要一个仅限javascript的解决方案,您可以做两件事:

  1. 找到一种观察DOM操作的方法。这不是通过浏览器轻松完成的。这里有一篇关于它的帖子:Detect changes in the DOM

  2. 每隔一秒(或左右)运行间隔检查ID ,然后可以在创建后快速删除。请记住,这是一个很大的开销。

  3. (function() {
      window.setInterval(function() {
        var elem = document.getElementById('cats');
        if (elem) {
          elem.parentNode.removeChild(elem);
        }
      }, 1000)
    }());
    
    (function () {
      button = document.getElementById('creator');
      button.addEventListener('click', function () {
        var element = document.createElement('div');
        element.id = 'cats'
        document.body.appendChild(element);
      })
    }());
    #cats {
      background: red;
      width: 100px;
      height: 100px;
    }
    <button id="creator">Create Element</button>

    通常你应该能够控制操纵DOM的人或者什么,从而能够首先避免创建。

答案 2 :(得分:0)

组合Hugos显示:none; -solution,检查id是否已被使用(如果是,请将其从DOM中删除)当您要引入具有该ID的元素时。 css规则不会阻止在DOM中创建具有该id的元素,因此在开始行动之前仍有可能创建具有此id的元素。