通过单击输入元素内部来停止事件传播

Div*_*wat 5 javascript event-listener dom-events

我在这里遇到一个奇怪的问题,我有一个div具有连接到它的点击事件,inputon-blur事件和button连接到它有click事件。


<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
<div onClick='div()'>
<input onBlur='input()' />
<button onClick='button(event)'> ABCD </button>
</div>
</body>
</html>

Run Code Online (Sandbox Code Playgroud)

以下是单击按钮时调用的函数。

function input(event){
    console.log('input')
    event.stopPropagation();
}

function button(event) {
  console.log('button')
  event.stopPropagation();
}

function div(){
  console.log('div')
}

Run Code Online (Sandbox Code Playgroud)

我在这里遇到的问题是,如果我在输入框内单击,那么它会记录div函数内部的内容,我试过了event.stopPropagation(),但它似乎不起作用有什么办法让它起作用吗?即 - 在单击输入时不记录 div 中的内容。

这是一个同样的Bin

Spr*_*r F 5

您必须为输入点击设置停止传播而不是模糊,因此不会传播 div 点击:

见下面的片段

function input(){
	console.log('input')
    event.stopPropagation();
}

function inputStopPropagation() {
   event.stopPropagation();
}

function button(event) {
  console.log('button')
  event.stopPropagation();
}

function div(){
event.stopPropagation();
  console.log('div')
}
Run Code Online (Sandbox Code Playgroud)
<div onClick='div()' style="padding:5px; background :green">
<input onBlur='input()' onClick='inputStopPropagation()' />
<button onClick='button(event)'> ABCD </button>
</div>
Run Code Online (Sandbox Code Playgroud)