使用 Jquery Mobile 1.2 时存在一个问题,如果您有一个 ListView ,并且隐藏然后显示 subview ,则无法搜索到该 subview 。
无需用文字解释,请看这个: http://jsfiddle.net/bodgybrothers/bw2ZV/
加载时它会创建两个 ListView 子项和搜索框。然后它隐藏并显示第二个 child 。通过搜索此列表,即使没有搜索匹配,也始终会显示第二个子项。
我相信这是 jquery mobile 中的一个错误,但想知道是否有解决方法可以使所有元素在 show 方法之后都可搜索。
$('#li-nav').append('<li id="1"><a href="#page1">Page 1</a></li>')
$('#li-nav').append('<li id="2"><a href="#page2">Page 2</a></li>').listview('refresh');
$('#2').hide();
$('#2').show();
编辑:我找到了一种方法,该方法返回到 javascript 而不是使用 jquery 库。隐藏和显示函数如下所示:
function showStuff(id) {
document.getElementById(id).style.display = '';
}
function hideStuff(id) {
document.getElementById(id).style.display = 'none';
}
更新了 JSfiddle http://jsfiddle.net/bodgybrothers/uwnCY/
最佳答案
您已经有了解决方法,但另一个更简单的解决方法(对于那些遇到同样问题的人) - 是执行 addClass("hide") 或 removeClass("hide") 而不是 .show/.hide。 这不再破坏搜索。
css:
.hide {display:none;}
JQuery:
$('#li-nav').append('<li id="1"><a href="#page1">Page 1</a></li>');
$('#li-nav').append('<li id="2"><a href="#page2">Page 2</a></li>');
$('#li-nav').listview('refresh');
$('#2').addClass('hide');
$('#2').removeClass('hide');
('<li>').listview('refresh');
参见jsfiddle:http://jsfiddle.net/Q8Cfj/1/
关于jquery mobile listview隐藏和显示然后无法搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14396500/