jQuery .on委托,只指导选择器中的子项

Hug*_*ius 3 javascript jquery javascript-events

您好我试图.on将事件绑定到一个元素的直接子节点.

dom看起来像这样

table > tbody > tr+ > td > table > tbody > tr+

到目前为止我已经尝试过

  • table.find(">tbody").on("dbclick", ">tr", listenerFunction);
  • table.on("dbclick", "> tbody > tr", listenerFunction);

这些都不能按预期工作,并且使用table.on("dbclick", "tr", listenerFunction)与嵌套表的碰撞导致双触发器等,因为两个表都有这个监听器.

任何想法最受赞赏.

编辑:HTML

<table>
  <tbody>
   <tr><!--Selectable row, adds the row after with sub table --></tr>
    <tr>
      <td>
        <table>
          <tbody>
            <tr></tr>
          </tbody>
        </table>
      </td>
    </tr>
  </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

Ror*_*san 6

在您的侦听器函数中,用于event.stopPropagation停止将事件冒泡回父节点tr.

function listenerFunc(e) {
    e.stopPropagation();

    // Do your thing...
}
Run Code Online (Sandbox Code Playgroud)

  • 我认为这是唯一可行的解​​决方案.由于元素是嵌套的,因此无论选择器是如何构造的,单击内部`tr`将始终触发"父"`tr`元素的处理程序. (2认同)