0

注意:这在 firefox、chrome 上运行良好,唯一的问题是使用移动浏览器(iphone/android)

我使用 jQuery/jQuery mobile 创建了一个模仿地址簿(电话簿)的网页,我将所有联系人放在一个列表中,并有一个搜索过滤器栏来搜索联系人。

<ul id="Addressbook" data-role="listview" data-filter="true" data-filter-placeholder="Type name here for filter search" data-filter-theme="f" data-inset="true">

另外,在加载我已经声明的页面时

$("[data-role=footer]").fixedtoolbar({ tapToggle: false });
$("[data-role=header]").fixedtoolbar({ tapToggle: false });

除了,当我点击搜索过滤器栏时,CSS 将被搞砸(搜索过滤器栏将移动到屏幕高度的 70% 左右,并且所有其他与定位(z-index)链接的 CSS 将是倾斜(绝对/固定定位也不起作用)。但是,在完全输入过滤器并在手机上按“完成”后,CSS 刷新到原始状态,我想知道是否可以阻止默认行为,我尝试使用preventdefault,但它没有帮助。

任何帮助,将不胜感激。

4

1 回答 1

0

您可以准确调查固定标头的 jquery 源代码中发生的情况,特别是针对 jquery 移动源代码的第 10116 行(不是缩小的)。首先listview上面会有input元素,所以如果点击它时出现这个问题,这意味着fixed headers和focusin事件有问题,所以让我们找到fixed header的定义位置,然后向下直到我们到达我们需要的。

如果屏幕小于特定大小,固定标题仍将被隐藏,例如这一行

.bind( "focusin focusout", function( e ) {
      if ( screen.width < 1025 && $( e.target ).is( o.hideDuringFocus ) && !$( e.target ).closest( ".ui-header-fixed, .ui-footer-fixed" ).length ) {}

将在固定标题上触发隐藏,因此您可以通过转到此行并在 if 语句添加之前的括号之后禁用它

.bind( "focusin focusout", function( e ) {
    return false;
    //you can keep rest of the code

这将使标题保持打开状态,并有望解决您的问题。

于 2013-07-16T04:23:52.030 回答