1

我有一个像这样的过滤 jquery 列表:

<ul id="myFilteredList" data-role="listview" data-filter="true">
  <li data-theme="b"  id="Li0" data-filtertext="selected_"><a href="#">Li element 1 </a></li>
  <li data-theme="b"  id="Li1" data-filtertext="selected_"><a href="#">Li element 2 </a></li>
  <li data-theme="b"  id="Li2" data-filtertext="selected_"><a href="#">Li element 3 </a></li>
  <li data-theme="b"  id="Li3" data-filtertext="selected_"><a href="#">Li element 4 </a></li>
  <li data-theme="b"  id="Li4" data-filtertext="selected_"><a href="#">Li element 5 </a></li>
</ul>

属性data-filtertext="selected_"可以通过编程方式更改为(data-filtertext="selected_blocked_"

<li data-theme="b"  id="Li4" data-filtertext="selected_ blocked_"><a href="#">Li element 5 </a></li>

使用此代码:

$('#myFilteredList').children('#Li4').attr('data-filtertext', 'selected_ blocked');
$('#myFilteredList').listview('refresh');

问题是当我尝试过滤被阻塞的元素时,它不显示Li 元素 5,我错过了什么?

在这里演示:http: //jsfiddle.net/SU6xY/

重现步骤:

  1. 转到演示。
  2. 在过滤栏输入阻塞,结果显示 Lielement 2
  3. 按 Alter Filter 按钮,将 li2 元素过滤器更改为无,将 li4 元素过滤器更改为阻塞。
  4. 在过滤栏再次输入被阻止,它仍然显示 Lielement 2 ,它必须显示 Lielement 4

它仅在从不过滤列表时才有效。如果您尝试过滤然后应用新的 data-filtertext,则过滤器不起作用。

4

2 回答 2

2

失去:

$('#myFilteredList').listview('refresh'); 

您在这里不需要它,它用于重新设置列表视图的样式。

没有它,它在我的 jsFiddle 示例中工作:http: //jsfiddle.net/Gajotres/5f3By/

如果您的内容是动态添加的,则在列表视图刷新后修改 data-filtertext。

于 2012-12-15T15:52:48.853 回答
0

我不确定这是否是解决方案,但您也许可以尝试使用 jQuery .data() 方法来更改数据属性的值?

http://api.jquery.com/data/

于 2012-12-15T15:43:30.433 回答