繁体   English   中英

单击适用于 tr 中还有按钮 onclick 事件

[英]The click is apply on <tr> and in tr there is also button onclick event

单击适用于并且在 tr 中还有按钮,我如何防止 tr onlick 事件发生在该 tr 内的 btn 上,并且 btn 也有 onclick 事件!

<tr key={index} onClick={() => this.getDetailPage(jobsData)}>
                    <td>{serial_num}</td>
                    <td>{jobsData.status}</td>
                    <td><button onClick={() =>this.editjob(jobsData)}>Edit</button></td>
                  </tr>

您可以 stopPropagation 停止捕获和冒泡阶段:

        <tr
          key={index}
          onClick={(e) => {
            e.stopPropagation();
            this.getDetailPage(e, jobsData);
          }}
        >
          <td>{serial_num}</td>
          <td>{jobsData.status}</td>
          <td>
            <button onClick={() => this.editjob(jobsData)}>Edit</button>
          </td>
        </tr>

如果我明白了,您想防止内部button将事件传播到外部tr 然后你可以做这样的事情:

<button onClick={(e) => {
    e.preventDefault();
    this.editjob(jobsData);
    }
}>

通过回调传递事件属性,然后添加:

event.stopPropagation();

这应该看起来像:

<tr key={index} onClick={(event) => event.stopPropagation();this.getDetailPage(jobsData)}>
                <td>{serial_num}</td>
                <td>{jobsData.status}</td>
                <td><button onClick={(event) => event.stopPropagation();this.editjob(jobsData)}>Edit</button></td>
              </tr>

此示例是您的代码的答案。 如果添加方法,则可以在方法中执行此操作。

function methodName(event) {
    event.stopPropagation();
    this.getDetailPage(jobsData)
}

<tr key={index} onClick={this.methodName}>
                <td>{serial_num}</td>
                <td>{jobsData.status}</td>
                <td><button onClick={this.methodName}>Edit</button></td>
              </tr>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM