我正在使用来自http://annotatorjs.org/的 Annotator来编写定性数据分析 (QDA) Web 应用程序。我想对其 API 进行一些调用。这些函数将注释对象作为参数。注释使用 jQuery 的$().data()
方法存储在<span>
表示注释的突出显示文本的标记上。您可以使用如下代码访问它:
$('.annotator-hl').map(function (_, elem) {
return $(elem).data('annotation');
}).toArray()
我遇到的问题是,当我运行此代码时,我得到一个空数组。根本没有检索到任何数据。我在代码中设置了一些断点以进行更深入的检查,发现在某些堆栈帧中,此代码返回正确的数据,而在其他堆栈帧中,它什么也不返回。这很奇怪,因为我不知道$().data()
用于存储数据和某些数据可见或不可见的函数之间有任何关系。
我以为我疯了,但是通过在不同的地方放置断点,我能够在 Annotator 的多个功能中重现这个观察结果。例如,这是用于将鼠标悬停在注释上的处理程序:https ://github.com/openannotation/annotator/blob/v2.0.0-alpha.3/src/ui/viewer.js#L363
如果您在此处放置断点并在堆栈帧中上下移动,则在某些帧中数据对象是可检索的,而在某些帧中则不是。我没有看到任何模式。
我认为这可能是因为 Webpack 编译代码的方式,但这不相关,因为当我使用 globals 将代码编写为脚本标记时遇到了同样的问题。
那么这有什么意义呢?为什么与元素关联的 jQuery 数据对象对某些函数可见,而对其他函数不可见?