Javascript 为什么不触发jQuery事件?
我认为我做错了什么,但只有当选择器是Javascript 为什么不触发jQuery事件?,javascript,jquery,events,Javascript,Jquery,Events,我认为我做错了什么,但只有当选择器是document时,事件才会起作用。否则,就不会发生 HTML <html> <head> <!-- the libraries references here --> </head>
document
时,事件才会起作用。否则,就不会发生
HTML
<html>
<head>
<!-- the libraries references here -->
</head>
<body>
<div id="canvas"></div>
</body>
</html>
如果我用div名称替换文档,如$('#canvas')。单击(canvasClickEvent)代码>,则不会调用单击事件。仅当选择器为document
时,它才起作用,但传递给函数的元素始终具有类似未定义的属性
可能会发生什么?似乎您将JavaScript代码放在html代码之前。因此,当JavaScript代码运行时,要处理的元素还没有加载到DOM中。(这就是为什么你得到了“未定义”)
只需将脚本放在相关HTML代码之后。或者将其放入pageLoad事件中:
$(function(){
....
})
发生的情况是,事件试图在DOM元素存在之前绑定事件
如果将事件包装在ready()方法中,则可以保证在事件尝试绑定之前域存在
$(document).ready( function () {
$("#canvas").click(canvasClickEvent);
}
ready()方法依赖于browsers DOMContentLoaded事件,这基本上意味着DOM已在浏览器中完全加载,但不一定意味着页面上的所有媒体都已完全加载。加载所有媒体后,将触发onLoad browser事件 嗯-在这里工作正常:是否有任何东西进入#canvas
或是空的?@muistooshort SVG将在其中绘制,但没有它就无法工作。有文本和没有文本,有CSS和没有CSS都不起作用。你的ID在页面上是唯一的吗?如果有两个ID是相同的,那么只有第一个ID的事件在这里也可以正常工作。
$(document).ready( function () {
$("#canvas").click(canvasClickEvent);
}