1

DBへのAJAX呼び出しから構築(インスタンス化および追加)された順序付けされていないリスト(各リスト要素にはさらにマークアップが含まれていますが、これは重要ではありません)があります。次のAJAX呼び出しの結果が出る前に、リストをクリアしたいと思います。

$('#list').empty()

何らかの理由で機能しません(.remove()と.not()を使用して多くの代替スキーマを試しましたが、成功しませんでした)。私はcssなどを変更できるので、アイテムを正しくターゲットにしていることを知っています。私ができる最善のことは、各li内からクラスごとに要素を削除することです。

$('list li .class').remove()

私はここで根本的に間違ったことをしていますか?

ところで、リスト要素はMustacheを使用してレンダリングされていますが、一度レンダリングされると、それは単なるHTMLマークアップであるため、問題にはなりません。それとも、ここでも間違っていますか?

助けてくれてありがとう。


[編集]さて、jsfiddleでまともなAJAX応答を得ることができなかったので、ここに本質的なAJAX関数呼び出しがあります。

function loadResults() {
$.ajax({
    'type' : 'POST',
    'url' : '/lib/ajax.php',
    'data' :    {
            'data1' : $('#data1').text(),
            'data2' : $('#data2').text(),
            'data3' : $('#data3').text()
            },
    'success' : function(data) {

           data = JSON.parse(data);

           // remove old results and add new results iteratively
           $('#results ul').empty();

           $.each(data, function(i, elem) {

              // Load the template
              $.get('/views/default/templates/elem_tpl.html', function(t) {
                       tmpl = t;
                   });

               $(document).ajaxStop(function() {
                   var template = Mustache.render(tmpl, elem);
                   $('#results ul').append(template);
               });
            });
        }
});

}

HTMLは、文字通り、テスト目的の基本的なリストです。

<div id="results">
     <ul>
     </ul>
</div>

それが助けになるなら。

4

1 に答える 1

0

正確な答えではありませんが、Mustacheを動的テンプレートに使用しているときに同様の問題が発生した場合は、クライアント側のテンプレートをunderscore.jsに切り替えることでした。

テンプレートを呼び出す前に以下を追加するだけであれば、テンプレートを変更する必要はありません(私のものは外部ファイルにあるため、時間を節約できます)。

_.templateSettings = {
interpolate : /\{\{(.+?)\}\}/g
};

初めて完璧に動作しました。jQueryを混乱させるためにMustacheが何をしていたのかわかりません。時間があれば、これを調べてみます。

于 2012-09-05T23:17:14.540 に答える