シングルページアプローチの使用で問題が発生しています。「フィルターページ」に移動したら、ajaxを介してアプリケーションのリストを入力したいので、ここで呼び出しをシミュレートしました。
function populateList()
{
$('#drpApplication').empty().listview('refresh');
if (typeof cache["FilterCounter"] == "undefined") {
cache["FilterCounter"] = 1;
}
var listItem = "<option value=" + '\'' + '1' + '\'' + ">" + 'Name1' + "</option>";
$('#drpApplication').append(listItem);
var listItem2 = "<option value=" + '\'' + '2' + '\'' + ">" + 'Name2' + "</option>";
$('#drpApplication').append(listItem2);
var listItem3 = "<option value=" + '\'' + '3' + '\'' + ">" + 'Name3' + "</option>";
$('#drpApplication').append(listItem3);
}
[適用]をクリックすると別のページに移動し、フィルターページに戻ると、アプリケーションリストに新しいデータセットが追加されます。ただし、最初にドロップダウンを空にするように指示します。また、ドロップダウンでアプリケーションを選択すると、その選択がページ上の別のリストビューに追加されることになります。
$('#drpApplication').change(function () {
$("#drpApplication option:selected").each(function () {
var filterItemId = 'liApplicationName' + cache["FilterCounter"].toString();
$('#lstApplicationList').append('<li value="' + $(this).val() + '" id="' + filterItemId + '"data-icon="delete"><a onclick="removeFilterItem(\'' + filterItemId + '\')">' + $(this).text() + '</a></li>').listview('refresh');
cache["FilterCounter"] = cache["FilterCounter"] + 1;
});
}).change();
その後の訪問で何が起こるかというと、ドロップダウンからアプリケーションを選択すると、2回目の訪問で同じエントリが2つリストビューに表示され、3回目の訪問で1つ選択するごとに3つのエントリが表示されます。
DOMがその内容などをキャッシュしているようで、停止できませんか?
このためにjfiddleを開始しましたが、リストにデータを入力する関数が実行されていません。jfiddleを使い始めたばかりなので、シミュレーションの設定が間違っている可能性がありますか?