Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当我点击它的任何一个子元素时,如何获得最顶端的父Id?_Javascript_Jquery_Html_Javascript Events - Fatal编程技术网

Javascript 当我点击它的任何一个子元素时,如何获得最顶端的父Id?

Javascript 当我点击它的任何一个子元素时,如何获得最顶端的父Id?,javascript,jquery,html,javascript-events,Javascript,Jquery,Html,Javascript Events,嗨,我有下面的HTML代码 <div id='parentDiv'> <div class='firstDiv'> <div class='firstDivChild1'></div> <div class='firstDivChild2'> <div class='firstDivChild2_Child1'></div>

嗨,我有下面的HTML代码

<div id='parentDiv'>
    <div class='firstDiv'>
         <div class='firstDivChild1'></div>
         <div class='firstDivChild2'>
              <div class='firstDivChild2_Child1'></div>
              <div class='firstDivChild2_Child2'></div>
         </div>
    </div>
    <div class='secondDiv'>
         <div class='secondDivChild1'>
              <div class='secondDivChild1_child'>
                   <div class='secondDivChild1_child_child'></div>
              </div>
         </div>
    </div>
</div>

现在,我的要求是,当我单击任何div时,我希望获得最顶端的父Id(即parentDiv)。目前,我正在使用下面的脚本获取父Id

<script type='text/javascript'>
$('div').click(function(e){
   var parentDivId = (e.target).parentNode.id;
   alert(parentDivId );
});
</script>

$('div')。单击(函数(e){
var parentDivId=(e.target).parentNode.id;
警报(parentDivId);
});
但它不起作用。任何人都可以修改此代码以达到我的要求。提前谢谢

然后使用。单击的任何子体都将向上冒泡事件(因此冒泡),并将起到与单击父体相同的作用。因此,将单击处理程序添加到父级也可以执行相同的操作

$('#parentDiv').on('click',function(){
    var id = this.id
});

如果该父DIV在文档中是唯一的,那么您可以通过ID引用它,即$(“#parentDiv”),但如果它不是唯一的,那么您应该更改HTML并添加到parentDiv某个类(即parentDiv),并且您可以通过这个表达式$(this)引用它

你的要求还不完全清楚,但根据你的一些评论,我的猜测是最好的

使用事件冒泡,您可以检查文档中的所有点击,然后确定点击源于
e.target
,然后您可以确定该点击源于您的div树还是其他地方:

$(document).click(function(e) {
    // determine if click was in our div tree or not
    if ($(event.target).closest("#parentDiv").length) {
        // click was in our parentDiv tree
    } else {
        // click was not in our parentDiv tree
    }
});
无论单击位于何处,您都可以随时使用此jQuery获取div树的顶部
id=“parentDiv”

$("#parentDiv")
如果您只需要位于所单击内容上方的最上面的div,则无论单击在文档中的什么位置,都可以使用如下事件冒泡来获得:

$(document).click(function(e) {
    e.stopPropagation();
    var topMostDiv = $(e.target).parents("div").last();
    // do whatever you want with topMostDiv here
});

试试这个小功能:

$.fn.root = function() {
  var $all = $( this[0] ).parents(); 

  // omit "html", "body" and one index to the last item;
  return $all.slice( $all.length - 3, $all.length - 2 );
};
示例用法:

$('input').click(function() {
    alert($(this).root().prop('id'));
});​

你能清楚地定义最顶层的级别吗?@GovindKamalaPrakashMalviya我需要第一个div的id,即id元素没有id:PIt仍然不清楚你想要什么。如果有人点击firstDivChild2_Child1,你想要什么id?@Pravallika69-你已经问了9个问题,从来没有接受过答案。事实并非如此。回到前面的问题,选择最佳答案,点击答案左侧的复选标记接受。否则,有些人会觉得帮助你毫无意义,因为你不会奖励任何帮助你的人。你也应该投票给所有提供帮助的答案。谁知道他们想要什么?我怀疑OP的英语说得不是很好,因为即使是直接的问题也会得到不清楚的答案。
$('input').click(function() {
    alert($(this).root().prop('id'));
});​