Javascript 获取父项';单击子项时,s ID n级别向上
我有这样的htmlJavascript 获取父项';单击子项时,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时
<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
是classcontainer
@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];