如何获取点击区域的ID而不是父ID?

时间:2016-04-29 07:24:50

标签: javascript jquery html

How to get the id of the element clicked using jQuery这个问题的答案是获取clicked元素的id。

但是它给了所有id。

例如

  <div id="major">
    <div id="two">  </div>
  </div>

点击div two时,我只想id two $("body").on('click','div',function() { alert(this.id); }); //It alerts the two and major. But i want two only. 。但是下面的脚本也会给出父ID。

$("body").on('click','div',function() 
{   
    alert(this.id);
    mkh(); #undeclared function
});   

为此,我试图将一些未申报的功能放在我想要的结果中。例如

DllMain

是否有任何inbuild方法可以做到这一点。 JS Fiddle

4 个答案:

答案 0 :(得分:3)

您需要将父 event propagation 停止到子元素:

$("body").on('click','div',function(e){   
  e.stopPropagation();
  alert(this.id);
  mkh(); #undeclared function
});   

<强> Working Demo

答案 1 :(得分:1)

使用event.target对象。

&#13;
&#13;
$("body").on('click', 'div', function(e) {
  alert(e.target.id);
  e.stopPropagation();
});
&#13;
#two {
  width: 100px;
  height: 100px;
  background: blue;
}
#major {
  width: 500px;
  height: 500px;
  background: orange;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div id="major">
  <div id="two"></div>
</div>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

不更改目标元素。

事件对象可用于实现此目的。 $(event.target)将提供当前目标元素 单击内部div时,使用event.stopPropagation()停止事件的传播(bubbling)。否则你会看到内部和外部的两个警报。外部分区

    $("body").on('click','div',function(event) 
    {   event.stopPropagation();
   var _getId = $(event.target).attr('id');
    alert(_getId);

    });   

选中此jsfiddle

答案 3 :(得分:0)

这不太难。看这个:

$("body").on('click','#two',function() 
    {   
        alert(this.id);
    });