超短版: 基于jQuerymobile的html5 webapp上的元素不会直接响应iPad上的vclicks。相反,他们默默地滚动到页面顶部并触发屏幕上同一区域下的任何内容的vclick。
图片和代码的长版: 我正在使用JQuerymobile,当我使用iPad时,我的页面响应了一些vclick事件。我有一个页面,其中包含一系列必须响应vclick事件的元素。如果一切都适合我的iPad显示器而不滚动,一切都很完美。如果我需要滚动查看我想要单击的元素,我会得到以下行为:
我用手指敲击红圈所在的位置:
页面闪烁,页面响应,好像我点击了小蓝圈中的区域:
(蓝色圆圈图片由于缺少与noobs的超链接而被编辑(在imgur上是Q43ri.png)
在我叠加屏幕之前,我对于发生了什么感到困惑:
所以当我单击我的一个div时,似乎它正在关注我在显示屏上单击的坐标,但是然后滚动到窗口的顶部并实际执行该视角的点击。我该如何解决这个问题?
以下是该页面部分的html:
<div id="inventoryPageContainer" style="padding-right: 100px;">
<div id="inventoryDisplayHeaders">
<div class="inventoryPageName inventoryPageColumn header">Name</div>
<div class="inventoryPageQuant inventoryPageColumn header">#</div>
<div class="inventoryPageWt inventoryPageColumn header">Wt.</div>
</div>
</div>
<div id="inventoryTemplate" class="inventoryPageRow" style="display: none;">
<div class="inventoryPageName inventoryPageColumn">Template Item Name</div>
<div class="inventoryPageQuant inventoryPageColumn">#</div>
<div class="inventoryPageWt inventoryPageColumn">X lb</div>
</div>
<div style="clear: both; border-bottom: 2px solid black;"></div>
所有div都是该inventoryTemplate项目的克隆。如果你需要CSS(我不认识男人,我试图给任何人读这个我得到的所有信息):
#inventoryPage .inventoryPageName {
width: 100%;
}
#inventoryPage .inventoryPageQuant {
width: 50px;
margin-right: -50px;
vertical-align: middle;
}
#inventoryPage .inventoryPageWt {
width: 50px;
margin-right: -50px;
right: -50px;
vertical-align: middle;
}
这是事件绑定代码: templateCopy.find('。inventorymensName')。text(row.itemName).bind('vclick.inventoryPage',{row:row},generateItemDescriptionDialog); templateCopy.find('。inventorymensQuant')。text(row.quantity).bind('vclick.inventoryPage',{row:row},generateItemQuantityDialog);
generateItemDescriptionDialog和generateItemQuantityDialog都在某些对话框页面上设置了一些值,然后触发对话框页面以$ .changePage(“#thepages”)显示。
所以呃..为什么会发生这种情况,我怎么能让它不发生?
(如果有人想知道我为什么要编制武器和枪支,这是一个RPG角色表webapp。)
答案 0 :(得分:0)
我认为我的问题是我编写事件处理程序的方式。我经历并补充道:
if (event.preventDefault)
event.preventDefault();
到每个处理程序的开头并确保处理程序返回false。不可否认,我不确切知道这是做什么的,所以我在这里做了一点货物,但确实解决了这个问题。