Javascript 使用Jquery查找冒泡事件中的挂起事件或最后一个事件

Javascript 使用Jquery查找冒泡事件中的挂起事件或最后一个事件,javascript,jquery,html,Javascript,Jquery,Html,是否有方法使用jQuery事件对象来标识事件冒泡阶段中的最后一个事件或挂起事件数 例:(链接:) HTML 预期输出(挂起事件)-->单击的元素 2-->跨度 1-->p 0-->div 单击事件在冒泡路径上的每个元素上使用完全相同的事件对象触发。您可以通过向链中较低的事件添加属性并向较高的事件检查该值来检查这一点。从这个意义上讲,没有“挂起事件”,只有一个事件在多个元素上触发 jQuery允许您使用$(el.parents()获取dom中元素的所有祖先。然后可以手动检查绑定到这些元素的事件处

是否有方法使用jQuery事件对象来标识事件冒泡阶段中的最后一个事件或挂起事件数

例:(链接:)

HTML

预期输出(挂起事件)-->单击的元素

  • 2-->跨度
  • 1-->p
  • 0-->div

    • 单击事件在冒泡路径上的每个元素上使用完全相同的事件对象触发。您可以通过向链中较低的事件添加属性并向较高的事件检查该值来检查这一点。从这个意义上讲,没有“挂起事件”,只有一个事件在多个元素上触发

      jQuery允许您使用
      $(el.parents()
      获取dom中元素的所有祖先。然后可以手动检查绑定到这些元素的事件处理程序。该API是
      $。\u数据(元素,“事件”)
      ,尽管这是一个私有API,在未来版本中可能会更改


      你能更具体地说明你想要完成什么吗?可能有更好的方法。

      我不认为这是可能的。实际上,我有一个无序列表(ul-li组合,带有跨距、按钮等),它与jQuery插件链接。在该插件中,我在事件气泡的每个级别/触发器上执行了操作/清理(在每个阶段更改树层次结构上的兄弟属性)。但是在这个冒泡序列的末尾(即,查找最后一个事件),我需要触发一个事件,根据树的更新状态执行下一组操作。但是我无法获得触发序列的结尾,因为与ul li关联的属性是相同的,因为代码是自动生成的。因此,当最顶端的单击处理程序正在运行时,您需要知道您是最后一个?您可以执行
      $(this).parents('ul,li')。length==0
      或类似的上下文测试吗?您也可以从单击处理程序中设置timeout(),但可以将其存储在闭包中,以便每个处理程序都可以看到相同的变量。在每个处理程序中,只有在尚未设置超时时才设置超时。我相信点击处理程序都会运行到完成,然后堆栈会返回并清除,然后超时应该会运行。我在ul-li组合或插件中没有任何“div”用法(它独立于div)。因此,在我的例子中,条件
      if(1==$(evnt.currentTarget.parentsUntil('div').length)
      将完美地完成这项工作:)
      <div>
          Div
          <p>
              Paragraph
              <br>
              <br>
              <span>
                  Span
              </span>
          </p>
      </div>
      
      $(document).ready(function(){
        $("span").click(function(event){
          alert("Spam");
        });
        $("p").click(function(event){
          alert("P");
        });
        $("div").click(function(){
           alert("Div");
        });
      });