【问题标题】:Deselect all listview items on scrollstart取消选择滚动启动时的所有列表视图项目
【发布时间】:2012-08-29 22:12:45
【问题描述】:

当您滚动页面并通过按 listview 按钮开始滚动时,该按钮会在滚动时保持突出显示,并在滚动完成后保持突出显示。滚动开始时如何取消选择?

如果我这样做,它会起作用:

$(document).bind('scrollstart', function(ev) {
    $('*').blur();
});

但这效率低下,并导致页面在滚动开始之前滞后,我尝试仅模糊 aliui-btnui-li,但这并没有取消突出显示它。

【问题讨论】:

  • 什么是列表视图按钮? Focus selector - 你试过了吗?
  • 呃。对不起。 jQuery手机。但仍然 - 焦点选择器可能有用
  • 很有帮助,谢谢,虽然我尝试了上面的代码,但改用$('*:focus').blur();,但这并没有突出任何东西,奇怪。
  • 你是否检查过这个:“如果你正在寻找当前聚焦的元素,$( document.activeElement ) 将检索它而无需搜索整个 DOM 树。”? $('*:focus') - 根据jquery docs,这与您的代码相同(在这两种情况下,所有元素都被搜索)。所以应该没有区别。但是 document.activeElement 对我来说看起来很有趣

标签: javascript jquery css jquery-mobile jquery-events


【解决方案1】:

当您单击 jQuery Mobile 伪页面上的列表项时,您基本上是将 ui-btn-down-* 类添加到列表项(* 表示主题字母之一)。

一旦用户开始滚动,你就可以删除这个类,这里​​是一个例子:

$(document).on("scrollstart", function () {
    setTimeout(function () {
        $.mobile.activePage.find('.ui-li').removeClass('ui-btn-down-a ui-btn-down-b ui-btn-down-c ui-btn-down-d ui-btn-down-e');
    }, 100);
});​

更新

在我的 Droid X 上进行测试时,我发现超时有助于更一致地消除突出显示的状态。您可以为自己的目的弄乱超时的持续时间。

这是一个演示:http://jsfiddle.net/WrqbG/7/

更新

我还意识到 .ui-btn-hover-* 类已应用,因此要返回未突出显示的列表,您还必须删除这些类。

.removeClass('ui-btn-down-a ui-btn-down-b ui-btn-down-c ui-btn-down-d ui-btn-down-e')

只需更改为:

.removeClass('ui-btn-down-a ui-btn-down-b ui-btn-down-c ui-btn-down-d ui-btn-down-e ui-btn-hover-a  ui-btn-hover-b  ui-btn-hover-c  ui-btn-hover-d  ui-btn-hover-e')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    相关资源
    最近更新 更多