我使用的是Dojo EnhancedGrid,只有在同一行编辑另一个单元格时,我单击一个新单元格时才会出现此问题:
在这种情况下的onRowClick(e)和onCellClick(e)事件中,为单元格传递的DOM节点似乎不是网格中该单元格的"真实"DOM节点——它似乎是某种克隆。我知道这一点是因为:
-
e.cellNode.getBoundingClientRect()返回所有0(不正确)。
-
通过dojo.query(…)通过反复尝试手动获取DOM节点给了我一个node的node.getBoundingRect()调用返回正确的屏幕矩形。
因此,我需要获得"正确"的DOM节点,这样我就可以在其上放置工具提示对话框,而不会因为getBoundingClientRect()结果不正确而将其放置在屏幕的左上角。这并不容易,因为单元格DOM元素的列索引具有idx=XXX属性,但单元格和行DOM元素似乎都没有rowIndex。因此,我无法找到一种方法来验证我从Dojo.query()获得的特定单元格DOM节点是否是我想要的rowIndex/colIndex的实际单元格。
有人有变通办法吗?基本上,在这种情况下,如何在给定rowIndex和colIndex的grid.onCellClick()中获得真正的DOM节点?同样,由于网格中的一个错误,e.cellNode在这种情况下无法工作。
这就是我所使用的,如果你确定当你调用这个事件时,你的domNodes
会更新:
var rowNode = dojo.query(e.target).closest(".dojoxGridRow")[0];