对javascript隐藏的文档元素
在我目前正在开发的一个web应用程序中,我遇到了一些处理javascript文档可见性的奇怪问题。在这个应用程序中,我有一个div,它包含一个InfoVis图,表示节点和边的网络,我为它实现了拖动缩放功能。如果您不熟悉它(这很可能),InfoVis是一个js库,它将图形和其他可视化呈现到HTML5画布中 我对InfoVis的core.js做了很多修改,以自定义外观和功能,这就是我计划实现拖动缩放的地方 我正在处理的.html页面加载InfoVis核心和它自己的.js文件,并带有对javascript隐藏的文档元素,javascript,html,html5-canvas,Javascript,Html,Html5 Canvas,在我目前正在开发的一个web应用程序中,我遇到了一些处理javascript文档可见性的奇怪问题。在这个应用程序中,我有一个div,它包含一个InfoVis图,表示节点和边的网络,我为它实现了拖动缩放功能。如果您不熟悉它(这很可能),InfoVis是一个js库,它将图形和其他可视化呈现到HTML5画布中 我对InfoVis的core.js做了很多修改,以自定义外观和功能,这就是我计划实现拖动缩放的地方 我正在处理的.html页面加载InfoVis核心和它自己的.js文件,并带有标记 在InfoV
标记
在InfoVis核心中,为画布背景定义onMouseDown:function(e){alert(“click”);}
的效果与预期一样,但是,当涉及到修改div(在实际的.html文件中实例化并在.css文件中设置样式)时,如下所示:
onMouseDown: function(e) {
e = e || window.event;
dragging = true;
$("#dragZoom")[0].style = "display: block; width: 0px; height: 0px; left: "+e.clientX+"; top: "+e.clientY+";";
}
要设置div的新样式,$(“#dragZoom”)
在[0]
中未定义。换句话说,javscript块看不到文档中的div
但是,如果我在另一个.js文件(不是InfoVis核心)中定义一个函数function foo(){alert($(“#dragZoom”)[0])}
,我可以这样调用foo()
onMouseDown: function(e) {
foo();
}
foo()可以访问div
当两个.js文件以相同的方式加载时,为什么在一个.js文件中可以看到这一点而在另一个文件中看不到这一点。。?这并没有阻碍我完成任何事情,但我觉得这很奇怪,我想知道到底发生了什么。谢谢你提供的任何信息 $(“#dragZoom”)不需要[0]为什么不需要?它不返回所有匹配项的集合吗?如果我只需要第一个(唯一)元素,我不应该这样做吗?ID应该是唯一的,因此不应该有多个。对,但是jquery中的$(string)函数总是返回一个集合。Doing$(“.class”)返回类名“class”的所有元素。