我的 html 中有一个简单的 div ,如下所示:
<div id="myDiv">
....
</div>
我还在window.click
上设置了 onlick 事件,如下所示:
window.onclick = function()
{
// do something
}
因此,如果我点击 div 中的任何位置,我如何才能发现此点击是在“myDiv”中进行的
注意:我无法在我的div上添加click事件,它是从jqgrid随机生成的
答案 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
});
<强>解释强>
document
。 document
是最佳默认值。body
用于委派事件,因为它有错误(样式可能导致它不会出现冒泡的鼠标事件)。click
)冒泡到处理程序元素(即文档)。#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/
答案 4 :(得分:1)
var myDiv = document.getElementById('myDiv');
myDiv.style.cursor = 'pointer';
myDiv.onclick = function() {
//DO SOMETHING
};
&#13;
答案 5 :(得分:1)
我们走了。
$('body').click(function(e) {
if (e.target.id == 'myDiv') {
alert('My Div!!!!');
}
});
答案 6 :(得分:0)
$( "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;
答案 7 :(得分:0)
检查以下代码。检查DEMO
使用event.target获取点击元素。
window.onclick = function(event)
{
if(event.target.id == "myDiv"){
alert("here")
}else{
alert('Body')
}
console.log(event.target.id)
}