【发布时间】:2014-02-11 10:10:04
【问题描述】:
我有一个带有面板导航的 jQuery Mobile 页面。最后两个元素是带有更多菜单项的可折叠元素。展开或折叠这些会导致页面跳到顶部,并且用户必须再次向下滚动才能选择显示的条目之一。
我试图通过在可折叠div的点击事件中执行.preventDefault()来抑制这种行为,但页面仍然跳到顶部。
有人知道如何预防吗?
提前致谢。
我的 HTML:
<div data-role="panel" id="panel" data-position="left" data-theme="a" data-display="overlay" data-position-fixed="true" >
<ul class="ui-listview" id="main_nav" data-role="listview" data-theme="a" >
<!-- lots of other items -->
<li class="custom-li" data-icon="carat-r" >
<div data-role="collapsible" data-iconpos="right" class="custom-collapsible" data-theme="a">
<h2>Mein Account</h2>
<ul class="ui-listview mainNav" data-role="listview" data-theme="a" >
<li id="nav_account" data-icon="carat-r">
<a href="#" onclick="return ajax_content('settings/account');" data-rel="close">Account Verwalten</a>
</li>
<li id="nav_profile_edit" data-icon="carat-r">
<a href="#" onclick="return ajax_content('settings/profile_edit');" data-rel="close">Profil bearbeiten</a>
</li>
<li id="nav_profile_interview" data-icon="carat-r">
<a href="#" onclick="return ajax_content('settings/profile_interview');" data-rel="close">Profil Interview bearbeiten</a>
</li>
<li id="nav_profile_pic" data-icon="carat-r">
<a href="#" onclick="return ajax_content('settings/profile_pic');" data-rel="close">Profilbild hochladen</a>
</li>
</ul>
</div>
</li>
<li class="custom-li" data-icon="carat-r" >
<div data-role="collapsible" data-iconpos="right" class="custom-collapsible" data-theme="a">
<h2>AGB / Impressum</h2>
<ul class="ui-listview mainNav" data-role="listview" data-theme="a" >
<li id="nav_profile_edit" data-icon="carat-r">
<a href="#" onclick="ajax_content('impressum')" data-rel="close">Impressum</a>
</li>
<li id="nav_profile_intervview" data-icon="carat-r">
<a href="#" onclick="ajax_content('agb')" data-rel="close">AGB</a>
</li>
<li id="nav_profile_pic" data-icon="carat-r">
<a href="#" onclick="ajax_content('datenschutz')" data-rel="close">Datenschutz</a>
</li>
</ul>
</div>
</li>
</ul>
</div>
自定义 CSS:
#main_nav .custom-li {
padding: 0 !important;
border-width:0 !important;
}
#main_nav .custom-bottom-li {
border-top-width: 0 !important;
}
#main_nav .custom-collapsible {
margin-top:-7px;
margin-bottom: -9px;
border-bottom-right-radius: 0 !important;
border-bottom-left-radius: 0 !important;
border-top-right-radius: 0 !important;
border-top-left-radius: 0 !important;
border-width:0 !important;
}
#main_nav .ui-collapsible-content{
margin-top: -7px !important;
margin-bottom: 7px !important;
}
【问题讨论】:
-
能看到ajax_content()的源码吗?
-
我认为您的问题在于您的 onclick ajax 返回和您的 href=#"。当您单击链接时,会调用 ajax_content,然后调用 href 值,因为 onclick 不会返回 false。所以你的#anchor被调用,它滚动到顶部。为了帮助更多,我可以有你的ajax_content源代码吗?
-
OP 说问题发生在展开/折叠时。这里的每个人都专注于列表视图中的锚点。为什么它们与真正负责展开/折叠操作的可折叠标题有关?
-
@Demnogonis 桌面浏览器不会出现此问题。您在哪个移动平台上进行测试?
-
@Omar 你看到我的回答了吗?问题是here,看看
expand这个变量。
标签: jquery jquery-mobile