Javascript jQuery展开过滤器上的可折叠列表视图
我有几个折叠的列表视图。这些可以通过输入字段进行过滤。目前,它们都已折叠,需要在过滤后单独打开。我想自动打开它们。我的问题与此非常相似,但具体来说,我过滤的是一个可折叠的listview小部件,而不是一个可折叠的小部件。任何帮助都将不胜感激 html:Javascript jQuery展开过滤器上的可折叠列表视图,javascript,jquery,jquery-mobile,Javascript,Jquery,Jquery Mobile,我有几个折叠的列表视图。这些可以通过输入字段进行过滤。目前,它们都已折叠,需要在过滤后单独打开。我想自动打开它们。我的问题与此非常相似,但具体来说,我过滤的是一个可折叠的listview小部件,而不是一个可折叠的小部件。任何帮助都将不胜感激 html: 我会检查筛选后是否有任何listview项可见,然后根据该项展开/折叠: $(".filterMe").on("filterablefilter", function (event, ui) { var anyVisible = fals
我会检查筛选后是否有任何listview项可见,然后根据该项展开/折叠:
$(".filterMe").on("filterablefilter", function (event, ui) {
var anyVisible = false;
ui.items.each(function( index ) {
if (!$(this).hasClass("ui-screen-hidden")){
anyVisible = true;
}
});
$(this).collapsible("option", "collapsed", !anyVisible);
});
谢谢ezanker,但这对我不起作用。我甚至尝试将其更改为
$(“.filterMe”)。在(“filterablefilter”,function(event,ui){alert(“triggered”);}代码>但这不起作用,所以我不确定为什么它甚至没有被触发。为了完成这张图片,我正在筛选的列表是通过ajax调用引入的(但这会有什么不同吗??)。正如您所看到的,有两个可折叠集(虽然可能有更多),它们都是由外部输入字段同时过滤的-也许这会影响一些事情?你觉得怎么样?@Brad,在ajax调用之后,你也应该调用filterable(“刷新”),filterablefilter处理程序应该在pagecreate中定义。谢谢@ezanker。不幸的是,我尝试了这两种方法,但都没有成功。我向我的ajax调用程序(位于documentReady中)添加了以下代码:$('#family').change(function(){myFamily=$(this.val();$(“#ajaxDiv”).load(“functions.php”,“changeFamilyGroup”:“true”,“family”:myFamily},function(){$(this.enhanceWithin(););$(.filterMe”).filterable(“刷新”)我添加了$(.filterMe”)。在(“页面创建”,函数(事件){$(this)。在(“filterablefilter”,函数(事件,用户界面){alert(“triggered”);})代码>仅在标记内,但没有运气!(另外,#family selector没有显示在我的初始帖子中,它只是一个选择框,在我的原始问题中加载相应的ul列表)它不是$(“.filterMe”).on(“pagecreate”,而是$(document).on(“pagecreate”,“#yourpageid”,function(){…请看我的codepen演示。您也可以尝试将AJAX调用放在pagecreate中,而不是放在document ready中。
$(document).on("pageshow", "#usagePicker", function () {
$(".filterMe").on("filterablefilter", function (event, ui) {
$(".ui-collapsible:not(.ui-screen-hidden)").collapsible("option", "collapsed", false);
});
});
$(".filterMe").on("filterablefilter", function (event, ui) {
var anyVisible = false;
ui.items.each(function( index ) {
if (!$(this).hasClass("ui-screen-hidden")){
anyVisible = true;
}
});
$(this).collapsible("option", "collapsed", !anyVisible);
});