2

使用 Jquery Mobile 1.2 存在一个问题,如果您有一个列表视图,并且您隐藏然后显示子项,则无法搜索所述子项。

无需用文字解释,请参阅:http: //jsfiddle.net/bodgybrothers/bw2ZV/

加载时它会创建两个列表视图子项和搜索框。然后它隐藏并显示第二个孩子。通过搜索此列表,即使没有搜索匹配,也始终显示第二个孩子。

我相信这是 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/

4

1 回答 1

0

您已经有一个解决方法,但另一个更简单的解决方法(对于那些有同样问题的人) - 是执行 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/

于 2013-09-03T19:09:58.090 回答