javascript - Wenn das übergeordnete Element an einen Klick gebunden ist, wie kann das untergeordnete Element verhindern, dass der Klick des übergeordneten Elements ausgelöst wird, ohne dass der Klick gebunden wird?
扔个三星炸死你
扔个三星炸死你 2017-06-12 09:22:56
0
3
861

HTML:

<p id="container">
  <p id="inner">

  </p>
</p>

JS:

document.getElementById('container').addEventListener('click',function () {
  document.getElementById('inner').style.display = "none";
});

Wenn ich auf das untergeordnete Element klicke, verschwindet es. Wie kann man diese Situation vermeiden? Ich möchte Klickereignisse nicht auch an untergeordnete Elemente binden.

扔个三星炸死你
扔个三星炸死你

Antworte allen(3)
曾经蜡笔没有小新
document.getElementById('container').addEventListener('click',function (e) {
  document.getElementById('inner').style.display = "none";
  e.stopPropagation();
}, true);
  1. addEventListener 传递第三个参数 true。使用事件捕获。

    • https://developer.mozilla.org...

  2. e.stopPropagation() 阻止事件传播。

    • https://developer.mozilla.org...

仅有的幸福

https://jsfiddle.net/g5u7qrrd/6/

document.getElementById('container')
    .addEventListener('click',function (e) {
        if (e.target.id !== 'inner')
            document.getElementById('inner').style.display = "none";
    });
仅有的幸福

给子元素style加个pointer-events: none;直接忽略鼠标事件。IE可能需要处理下兼容。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage