我们通过从JSON文件中提取数据来创建HTML页面。这工作正常,我们正在动态创建一个使用jQuery Mobile的信息可折叠列表。为什么我无法访问HTML div/jQuery对象的属性?
现在我们试图获取每一位数据的偏移属性,以便我们可以直接从其他页面链接到它。
问题是我们似乎无法掌握偏移值。使用此代码:
var entry = $("#" + glosID);
console.log(entry);
var offsetJS = entry.offsetTop;
var offsetJQ = entry.offset().top;
console.log("Offset from top(JS): " + offsetJS);
console.log("Offset from top(jQuery): " + offsetJQ);
输出是
Offset from top(JS): undefined
Offset from top(jQuery): 0
我注意到,检查控制台的对象表明,它具有结构:
div.0: listofproperties
所以,我想
现在我得到:
Uncaught TypeError: Object #<HTMLDivElement> has no method 'offset'
最后我尝试这样做:
var offsetJS = entry[0].offsetTop;
var offsetJQ = entry[0].draggable;
现在,这是有趣的。我选择了“可拖动”,因为它是我发现的第一个简单的财产。我用很多其他我发现的东西测试了它们,它们都工作。与此代码我得到:
Offset from top(JS): 0
Offset from top(jQuery): false
我测试许多其它性质的使用[0]通知(例如的namespaceURI),为我清楚地访问在阵列中的第一个对象。但尝试,因为我可能无法获得偏移量,也没有任何其他与偏移相关的属性(如offsetHeight)。但是,我可以获得其他数字,如nodeType。
这到底是怎么回事? jQuery手机搞乱了什么?
你知道jQuery对象和DOM元素有什么区别吗? – epascarello
如果该元素在_collapsible_中并且它是_collapsed_,offset()。top将返回0,因为它是隐藏的。选中这个[demo](http://jsfiddle.net/Palestinian/tXg7x/)向下滚动并点击带红色边框的单词。 – Omar
该元素不在可折叠状态,它是您单击以打开折叠状态的可折叠标题文本。 –