4

我有一个用淘汰赛构建的动态列表视图:

<ul class="menu-items-listview" id="items-list" 
    data-role="listview" data-bind="foreach: Items" >

    <li class="menu-item">
        <div class="menu-item-container">
            <div class="menu-amount-container">
                <a id="dec-button" data-bind="click:$root.decCount, visible:Count">-</a>
                <span data-bind="text: Count, visible: Count" class="item-amount-counter"></span>
                <a id="inc-button" data-bind="click:$root.incCount">+</a>
            </div>
        </div>
    </li>
</ul>

在桌面上一切正常。每次刷新列表视图后,在触摸设备上,首先点击 a#inc-button#dec-button将触发两次。然后一切正常,直到刷新列表视图。

线索1:页面上有两个iScroll div,看起来可能会导致问题。论坛上有关于 jQuery 事件订阅但没有淘汰绑定的问题:

  1. https://github.com/cubiq/iscroll/issues/270
  2. 如何解决被触发两次的点击事件?

线索 2:在列表视图刷新后,如果我触摸屏幕滚动然后按下按钮,则触发一次操作

编辑:这绝对是一个 iScroll 问题。我禁用了 iScroll 脚本,并且动作会按原样触发一次

4

1 回答 1

0

我认为这种方法很棒,我个人会使用 JQuery Mobile,它有一个vclick事件,因为从经验来看,这在 Android 上也更具响应性。

click我已经不再在移动网站/应用程序上使用绑定。请参阅此处:在 jQuery mobile 中,tap 和 vclick 之间的区别是什么?

<ul class="menu-items-listview" id="items-list" 
    data-role="listview" data-bind="foreach: Items" >

    <li class="menu-item">
        <div class="menu-item-container">
            <div class="menu-amount-container">
                <a id="dec-button" data-bind="event: { vclick: $root.decCount }, visible:Count">-</a>
                <span data-bind="text: Count, visible: Count" class="item-amount-counter"></span>
                <a id="inc-button" data-bind="event: { vclick: $root.incCount }">+</a>
            </div>
        </div>
    </li>
</ul>

还有其他替代方法,您始终可以使用他们的下载构建器获得 JqM 的精简版本,以获得触摸特定事件所需的最低限度。

编辑:如果问题仅通过使用 iScroll 就解决了,您可以尝试添加 CSS 用于 iOS 动量滚动吗?通常为我做了伎俩。那么你至少要避免一种依赖。见这里:http: //johanbrook.com/browsers/native-momentum-scrolling-ios-5/

于 2013-08-14T07:52:31.847 回答