jquery - knockoutjs "click"绑定(bind)在触摸设备上触发两次(iscroll 问题)

标签 jquery knockout.js iscroll

我有一个用 knockout 构建的动态 ListView :

<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>

在桌面上一切正常。在触摸设备上,每次刷新 ListView 后,首先点击 #inc-button#dec-button 会触发两次。然后一切正常,直到 ListView 刷新为止。

线索1:页面上有两个iScroll div,看起来可能是导致问题的原因。论坛上有一些有关 jQuery 事件订阅但不涉及 knockout 绑定(bind)的问题:

  1. https://github.com/cubiq/iscroll/issues/270
  2. How can I trouble shoot click events being triggered twice?

线索2: ListView 刷新后,如果我触摸屏幕滚动,然后按下按钮,操作就会触发一次

编辑:这绝对是 iScroll 问题。我禁用了 iScroll 脚本,并且操作按其应有的方式触发一次

最佳答案

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

我已经不再在移动网站/应用程序上使用click绑定(bind)。参见这里:In jQuery mobile, what's the diff between tap and 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 就解决了问题,您可以尝试添加 iOS 动量滚动的 CSS 吗?通常都为我完成了这个伎俩。那么你至少可以避免一种依赖。参见这里:http://johanbrook.com/browsers/native-momentum-scrolling-ios-5/

关于jquery - knockoutjs "click"绑定(bind)在触摸设备上触发两次(iscroll 问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17554117/

相关文章:

asp.net-mvc - 如何使用 ASP.NET MVC 和表单例份验证创建单页应用程序 (SPA)?

ios - iframe 阻止 iScroll 在移动 Safari 上滚动

javascript - 让 jQuery 插入定义的内容

javascript - 使用ajax从按钮获取属性到 Node

javascript - knockout 双向绑定(bind)到对象

javascript - 单击下拉菜单中的项目时,jQuery 不会触发

javascript - 如何在 TinyMce 的 ko.bindingHandler 中传递事件

javascript - Knockout.js 条件绑定(bind)

javascript - jQuery Mobile iScroll5 绑定(bind)

iScroll 不滚动内容,只是弹回顶部