iPad上的JQuerymobile:vclick触发滚动到页面顶部,然后执行vclick

时间:2011-08-28 16:20:28

标签: javascript jquery ipad click scroll

超短版:  基于jQuerymobile的html5 webapp上的元素不会直接响应iPad上的vclicks。相反,他们默默地滚动到页面顶部并触发屏幕上同一区域下的任何内容的vclick。

图片和代码的长版: 我正在使用JQuerymobile,当我使用iPad时,我的页面响应了一些vclick事件。我有一个页面,其中包含一系列必须响应vclick事件的元素。如果一切都适合我的iPad显示器而不滚动,一切都很完美。如果我需要滚动查看我想要单击的元素,我会得到以下行为:

我用手指敲击红圈所在的位置:

http://imgur.com/3L9qR.png

页面闪烁,页面响应,好像我点击了小蓝圈中的区域:

(蓝色圆圈图片由于缺少与noobs的超链接而被编辑(在imgur上是Q43ri.png)

在我叠加屏幕之前,我对于发生了什么感到困惑:

http://imgur.com/KMPqQ.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。)

1 个答案:

答案 0 :(得分:0)

我认为我的问题是我编写事件处理程序的方式。我经历并补充道:

if (event.preventDefault)
     event.preventDefault();

到每个处理程序的开头并确保处理程序返回false。不可否认,我不确切知道这是做什么的,所以我在这里做了一点货物,但确实解决了这个问题。