[英]How to get which element was clicked?
我的html中有一个简单的div如下:
<div id="myDiv">
....
</div>
我还在 window.click
上设置了onlick事件,如下所示:
window.onclick = function()
{
// do something
}
所以,如果我点击div中的任何地方,我怎么才能发现这个点击是在“myDiv”中进行的
注意:我无法在div上添加click事件,它是从jqgrid随机生成的
$(document).on("click","#myDiv", function (event) {
alert(event.target.id);
});
从函数中获取事件: window.onclick = function(event)
然后在函数内部,你可以将它用作event.target
:
window.onclick = function(event)
{
alert(event.target);
}
这是使用addEventListener
的示例 - 不使用jQuery
document.getElementById('myDiv').addEventListener('click',function(e){
// this div has been clicked
console.log('this div has been clicked');
});
UPDATE
这是动态创建元素的非jQuery解决方案
document.addEventListener('click',function(e){
if( e.target.id == 'myDiv' )
{
// this div has been clicked
console.log('this div has been clicked');
}
});
我纯粹是为了澄清与@Nishit Maheta
就我对他的回答进行投票的讨论。
这个问题的目的就是这个。 “我希望知道何时点击动态添加的div”。 您看到动态添加的那一刻认为委托事件! :)
由于这个问题允许使用jQuery, 因此@erkaner
的答案接近理想情况。 我只想解释为什么它是适当的解决方案 。
$(document).on("click","#myDiv", function (event) {
// Do something
});
说明:
document
。 document
是最佳默认值。 body
用于委派事件,因为它有一个错误(样式可能导致它不会出现冒泡的鼠标事件)。 click
)冒泡到处理程序元素(即文档)。 #myDiv
)仅应用于bubble-chain中的元素 。 这非常有效。 所有这一切的结果是元素在事件时间之前不需要存在(当事件被注册时不需要存在)。
此外,因为委托通常用于鼠标事件 (而不是每秒50,000次),所以它与“原始”事件处理程序之间的速度差异可以忽略不计。 好处远远超过任何微不足道的速度差异。
关于其他onclick=
答案
window.onclick
属性是一个坏主意,因为你停止使用它的任何其他东西(不是任何使用jQuery的人都应该使用它)。 onclick
的事件参数(这应该足以阻止任何人使用它)。 有一些解决方法,但创建jQuery是为了避免浏览器的变通方法:) 笔记:
如果命名不在您的控制范围内,您只需要匹配的内容即可。 最糟糕的情况是,它可以像“匹配任何表格下的任何div”一样简单,但这取决于您的特定HTML和代码:
$(document).on("click","table div", function (event) {
// Do something
});
这是一个实际的例子:
http://jsfiddle.net/TrueBlueAussie/eyo5Lnsy/
@Sashi Kant:如果您可以提供页面HTML输出的样本(例如从浏览器中保存),我将很乐意为您提供的任何变体提供:)
var myDiv = document.getElementById('myDiv'); myDiv.style.cursor = 'pointer'; myDiv.onclick = function() { //DO SOMETHING };
开始了。
$('body').click(function(e) {
if (e.target.id == 'myDiv') {
alert('My Div!!!!');
}
});
$( "body" ).click(function( event ) { $( "#log" ).html( "clicked: " + event.target.nodeName ); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="myDiv"> .... </div> <div id="log"></div>
检查以下代码。 检查DEMO
使用event.target获取被点击的元素。
window.onclick = function(event)
{
if(event.target.id == "myDiv"){
alert("here")
}else{
alert('Body')
}
console.log(event.target.id)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.