Sas*_*ant 4 html javascript jquery
我的html中有一个简单的div如下:
<div id="myDiv">
....
</div>
Run Code Online (Sandbox Code Playgroud)
此外,我已将onlick事件设置window.click如下:
window.onclick = function()
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
所以,如果我点击div中的任何地方,我怎么才能发现这个点击是在"myDiv"中进行的
注意:我无法在div上添加click事件,它是从jqgrid随机生成的
$(document).on("click","#myDiv", function (event) {
alert(event.target.id);
});
Run Code Online (Sandbox Code Playgroud)
问题的目的很简单。“我想知道何时单击动态添加的 div”。当您看到动态添加的那一刻,请考虑委托事件!:)
由于这个问题允许使用 jQuery,因此对于这种情况的答案@erkaner接近理想。我只是想解释为什么它是合适的解决方案。
$(document).on("click","#myDiv", function (event) {
// Do something
});
Run Code Online (Sandbox Code Playgroud)
解释:
document这种情况。document如果没有其他更接近/方便的情况,则这是最佳默认值。body委托事件,因为它有一个错误(样式可能会导致它无法获得冒泡的鼠标事件)。click在本例中)冒泡到处理程序元素(即文档)。#myDiv)仅应用于气泡链中的元素。这是非常有效的。所有这一切的结果是该元素在事件发生之前不需要存在(在事件注册时它不需要存在)。
此外,由于委托通常用于鼠标事件(而不是每秒 50,000 次),因此与“原始”事件处理程序之间的任何速度差异都可以忽略不计。其好处远远超过任何微小的速度差异。
关于其他onclick=答案
window.onclick属性是一个坏主意,因为您会停止使用它的任何其他内容(并不是任何使用 jQuery 的人都应该使用它)。onclick其次,并非所有浏览器都提供传递给的事件参数(这应该足以阻止任何人使用它)。有一些解决方法,但创建 jQuery 是为了避免浏览器解决方法:)笔记:
如果命名不在你的控制之下,你只需要一些匹配的东西。最坏的情况,它可能就像“匹配任何表格下的任何 div”一样简单,但这取决于您的特定 HTML 和代码:
$(document).on("click","table div", function (event) {
// Do something
});
Run Code Online (Sandbox Code Playgroud)
这是一个实际的例子:
http://jsfiddle.net/TrueBlueAussie/eyo5Lnsy/