如何获取单击的元素?

时间:2015-04-14 12:44:00

标签: javascript jquery html

我的 html 中有一个简单的 div ,如下所示:

<div id="myDiv">
....

</div>

我还在window.click上设置了 onlick 事件,如下所示:

window.onclick = function()
{
    // do something
 }  

因此,如果我点击 div 中的任何位置,我如何才能发现此点击是在“myDiv”中进行的

注意:我无法在我的div上添加click事件,它是从jqgrid随机生成的

8 个答案:

答案 0 :(得分:5)

$(document).on("click","#myDiv", function (event) {
     alert(event.target.id);
});

答案 1 :(得分:3)

从函数window.onclick = function(event)获取事件,然后在函数内部,您可以将其用作event.target

window.onclick = function(event)
{
    alert(event.target);
}

答案 2 :(得分:3)

以下是使用addEventListener的示例 - 不使用jQuery

document.getElementById('myDiv').addEventListener('click',function(e){
    // this div has been clicked
    console.log('this div has been clicked');
});

<强>更新

这是动态创建元素的非jQuery解决方案

document.addEventListener('click',function(e){
    if( e.target.id == 'myDiv' )
    {
        // this div has been clicked
        console.log('this div has been clicked');
    }
});

答案 3 :(得分:3)

我纯粹是为了澄清与@Nishit Maheta关于我对他的回答的投票的讨论。

问题的目的只是这个。 &#34;我想知道何时点击动态添加的div&#34;。您看到动态添加的那一刻想到委派的事件! :)

由于这个问题允许jQuery,the answer by @erkaner接近理想的情况。我只想解释为什么它是适当的解决方案

$(document).on("click","#myDiv", function (event) {
     // Do something
});

<强>解释

  • 这使用jQuery 委托事件处理程序。事件处理是&#34;委托&#34;到目标目标的不变的祖先,因此得名。
  • 在这种情况下,选择的祖先是document
  • 您应该使用最接近目标的不变祖先,但如果没有其他更接近/方便的话,document是最佳默认值。
  • 警告:不要将body用于委派事件,因为它有错误(样式可能导致它不会出现冒泡的鼠标事件)。
  • 事件(在这种情况下为click)冒泡到处理程序元素(即文档)。
  • 然后将jQuery选择器(在本例中为#myDiv)应用于泡泡链中的元素。这非常有效。
  • 然后,提供的处理函数仅应用于导致事件的任何匹配元素

所有这一切的结果是元素在事件时间之前不需要存在(当事件被注册时不需要存在)。

此外,因为委托通常用于鼠标事件(而不是每秒50,000次),所以这个和#34; raw&#34;之间的任何速度差异。事件处理程序可以忽略不计。好处远远超过任何微不足道的速度差异。

关于其他onclick=答案

  • 首先,使用单个window.onclick属性是一个坏主意,因为你停止使用它的任何其他东西(不是任何使用jQuery的人都应该使用它)。
  • 其次,所有浏览器都没有提供传递给onclick的事件参数(这应该足以阻止任何人使用它)。有一些解决方法,但创建jQuery是为了避免浏览器的变通方法:)

备注:

如果命名不在您的控制范围内,您只需要匹配的内容即可。最糟糕的情况是,它可以像&#34;匹配任何表格下的任何div&#34;,但这取决于您的特定HTML&amp;代码:

$(document).on("click","table div", function (event) {
     // Do something
});

这是一个实际的例子:

http://jsfiddle.net/TrueBlueAussie/eyo5Lnsy/

@Sashi Kant:如果您可以提供页面HTML输出的样本(例如从浏览器中保存),我将很乐意为您提供的任何变体提供:)

答案 4 :(得分:1)

&#13;
&#13;
var myDiv = document.getElementById('myDiv');

myDiv.style.cursor = 'pointer';
myDiv.onclick = function() {
    //DO SOMETHING
};
&#13;
&#13;
&#13;

答案 5 :(得分:1)

我们走了。

$('body').click(function(e) {      
  if (e.target.id == 'myDiv') {
    alert('My Div!!!!');
  }
});​

答案 6 :(得分:0)

&#13;
&#13;
$( "body" ).click(function( event ) {
  $( "#log" ).html( "clicked: " + event.target.nodeName );
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="myDiv">
....

</div>
<div id="log"></div>
&#13;
&#13;
&#13;

答案 7 :(得分:0)

检查以下代码。检查DEMO

使用event.target获取点击元素。

window.onclick = function(event)
{
  if(event.target.id == "myDiv"){
    alert("here")
  }else{
    alert('Body')
  }
 console.log(event.target.id)
}