动态修改jquery过滤列表中的data-filtertext

时间:2012-12-15 15:40:20

标签: jquery jquery-mobile

我有一个像这样过滤的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 element 5 ,我缺少什么?

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

重现的步骤:

  1. 转到演示。
  2. 在过滤栏处阻止类型,结果显示Lielement 2
  3. 按Alter Filter按钮,它将li2元素过滤器更改为none,并将li4元素过滤器更改为已阻止。
  4. 类型再次在过滤栏处被阻止,它仍显示Lielement 2,它必须显示Lielement 4
  5. 仅在从不过滤列表时才有效。如果您尝试过滤然后应用新的data-filtertext,则过滤器不起作用。

2 个答案:

答案 0 :(得分:2)

失去:

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

你在这里不需要它,它用于重新设计列表视图。

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

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

答案 1 :(得分:0)

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

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