suchen

Heim  >  Fragen und Antworten  >  Hauptteil

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?

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.

扔个三星炸死你扔个三星炸死你2751 Tage vor865

Antworte allen(3)Ich werde antworten

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-12 09:24:56

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

    Antwort
    0
  • 仅有的幸福

    仅有的幸福2017-06-12 09:24:56

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

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

    Antwort
    0
  • 仅有的幸福

    仅有的幸福2017-06-12 09:24:56

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

    Antwort
    0
  • StornierenAntwort