Javascript 获取父项';单击子项时,s ID n级别向上

Javascript 获取父项';单击子项时,s ID n级别向上,javascript,jquery,html,Javascript,Jquery,Html,我有这样的html <div id=longId class="container"> <p> .. <p> .. <ul> <li> <li> </ul> </div> 我可以用适当的ID标识每个HTML元素(并解析它们),或者使用jquery循环到ID长度大于1的父元素。但是有没有干净的方法呢?我知道当您遇到相反的问题时(单击child时

我有这样的html

<div id=longId class="container">
    <p> .. 
    <p> ..
    <ul>
      <li>
      <li>
    </ul>
</div>

我可以用适当的ID标识每个HTML元素(并解析它们),或者使用jquery循环到ID长度大于1的父元素。但是有没有干净的方法呢?我知道当您遇到相反的问题时(单击child时不触发parent),您可以停止传播。

尝试使用最接近的函数():


在处理程序中,
引用的是
.container
元素,因此请使用:

var docnumber = this.id.split("-")[0];

那么为什么不:
var docnumber=this.id.split(“-”[0]???我不确定是否理解这个问题,因为您正在指定父元素
。container
您的
变量将引用该类的div。因此
this.id
是class
container
@A.Wolff的div的id:考虑到所有其他复杂的答案,也许你应该将你的评论作为答案发布。我被发布的问题和答案弄糊涂了。您不能通过this.id或$(this.attr('id')获取div的id吗?如果单击div或其子项,则将触发click处理程序,但这仍然引用具有您指定的id的divneed@FelixKling看起来是这样,但我不确定这个问题,可能太明显了…将事件处理程序绑定到每个后代。。。真正地为什么不利用事件泡沫的事实呢?谢天谢地,有人用最简单的方式回答了这个问题,我不知道另一个是怎么回事answers@Huangism我在过去看到过更清楚的问题,也许这就是原因……;)
$(".container").on("click", "*", function(e) {
    var id = $(this).closest(".container").attr("id"); 
    e.stopPropagation();
});
$("*",".container").on("click",function(e){
   alert($(this).closest(".container").attr("id"));
   e.stopPropagation();
});
$(document).on("click", ".container *", function(e) {
    var element_with_id = $(this).closest('[id]');
    var docname = $(this).attr('id').replace(/^.*?-/, "");
    loadDoc(docnumber, docname);
    e.stopPropagation(); // Prevent bubbling up to higher elements
});
var docnumber = this.id.split("-")[0];