启动过滤器后重置 jquery listview 可折叠内容
Reset jquery listview collapsible content after initiate filter
我有一个包含可折叠内容的列表视图。过滤器自动展开可折叠内容。这是通过 javascript 完成的。
重置搜索过滤器后,所有项目列表都保持展开状态。如何重置为初始状态(折叠)?
代码如下:
JsFiddle
<script>
$(document).on('pageinit', function() {
$("#iamalist").on('updatelayout', function() {
if (($('#iamalist li').length - $('#iamalist .ui-screen-hidden').length) < $('#iamalist li').length) {
$('#iamalist li').each(function() {
$(this).find('.ui-collapsible-content').removeClass('ui-collapsible-content-collapsed');
$(this).find('.ui-icon-plus').addClass('ui-icon-minus');
$(this).find('.ui-icon-plus').removeClass('ui-icon-plus');
});
}
});
});
</script>
<div data-role="content" id="iama">
<ul data-role="listview" id="iamalist" data-inset='true' data-filter="true" data-filter-placeholder="Search term is...">
<li>
<div data-role="collapsible" data-inset='false'>
<h3>Title</h3>
<p>eu</p>
</div>
</li>
<li>
<div data-role="collapsible" data-inset='false'>
<h3>Title</h3>
<p>tu</p>
</div>
</li>
<li>
<div data-role="collapsible" data-inset='false'>
<h3>Title</h3>
<p>voi</p>
</div>
</li>
<li>
<div data-role="collapsible" data-inset='false'>
<h3>Title</h3>
<p>Answer.</p>
</div>
</li>
<li>
<div data-role="collapsible" data-inset='false'>
<h3>Title</h3>
<p>Answer.</p>
</div>
</li>
</ul>
</div>
您可以在一个函数中完成此操作。使用可过滤的 widgit's Filter event 而不是列表中的更新布局。此事件在每个过滤器操作后触发。在处理程序中检查列表中的 class .ui-screen-hidden
。如果 none 存在,折叠所有可折叠物,否则展开它们。
可折叠小部件具有 collapse and expand 的方法供您使用。
$("#iamalist").on("filterablefilter", function( event, ui ) {
if ($("#iamalist .ui-screen-hidden").length == 0){
$('#iamalist [data-role="collapsible"]').collapsible( "collapse" );
} else {
$('#iamalist [data-role="collapsible"]').collapsible( "expand" );
}
});
Updated FIDDLE
我有一个包含可折叠内容的列表视图。过滤器自动展开可折叠内容。这是通过 javascript 完成的。 重置搜索过滤器后,所有项目列表都保持展开状态。如何重置为初始状态(折叠)?
代码如下: JsFiddle
<script>
$(document).on('pageinit', function() {
$("#iamalist").on('updatelayout', function() {
if (($('#iamalist li').length - $('#iamalist .ui-screen-hidden').length) < $('#iamalist li').length) {
$('#iamalist li').each(function() {
$(this).find('.ui-collapsible-content').removeClass('ui-collapsible-content-collapsed');
$(this).find('.ui-icon-plus').addClass('ui-icon-minus');
$(this).find('.ui-icon-plus').removeClass('ui-icon-plus');
});
}
});
});
</script>
<div data-role="content" id="iama">
<ul data-role="listview" id="iamalist" data-inset='true' data-filter="true" data-filter-placeholder="Search term is...">
<li>
<div data-role="collapsible" data-inset='false'>
<h3>Title</h3>
<p>eu</p>
</div>
</li>
<li>
<div data-role="collapsible" data-inset='false'>
<h3>Title</h3>
<p>tu</p>
</div>
</li>
<li>
<div data-role="collapsible" data-inset='false'>
<h3>Title</h3>
<p>voi</p>
</div>
</li>
<li>
<div data-role="collapsible" data-inset='false'>
<h3>Title</h3>
<p>Answer.</p>
</div>
</li>
<li>
<div data-role="collapsible" data-inset='false'>
<h3>Title</h3>
<p>Answer.</p>
</div>
</li>
</ul>
</div>
您可以在一个函数中完成此操作。使用可过滤的 widgit's Filter event 而不是列表中的更新布局。此事件在每个过滤器操作后触发。在处理程序中检查列表中的 class .ui-screen-hidden
。如果 none 存在,折叠所有可折叠物,否则展开它们。
可折叠小部件具有 collapse and expand 的方法供您使用。
$("#iamalist").on("filterablefilter", function( event, ui ) {
if ($("#iamalist .ui-screen-hidden").length == 0){
$('#iamalist [data-role="collapsible"]').collapsible( "collapse" );
} else {
$('#iamalist [data-role="collapsible"]').collapsible( "expand" );
}
});
Updated FIDDLE