繁体   English   中英

单击孩子时获取父级ID的n级

[英]Get parent's ID n-levels up when child is clicked

我有这样的HTML

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

单击class =“ container” div中的任何子级时,我想获取div的ID。

$(document).on("click", ".container", function(e) {
    var docnumber = e.target.id.split("-")[0];  //sometimes the children fire this. their IDs are not set
    var docname = e.target.id.replace(docnumber + "-", "");
    loadDoc(docnumber, docname);
});

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

尝试使用最接近的函数( http://api.jquery.com/closest/ ):

$(".container").on("click", "*", function(e) {
    var id = $(this).closest(".container").attr("id"); 
    e.stopPropagation();
});

在处理程序内部, this是指.container元素,因此请使用:

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

演示

$("*",".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
});

暂无
暂无

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

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