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 エレメント フィルタが none に、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() メソッドを使用して data 属性の値を変更してみてはいかがでしょうか?

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

于 2012-12-15T15:43:30.433 に答える