検索クエリが一致したときに、アコーディオンの特定のパネルのみを表示する検索機能があります。フィドルを参照してください。sth が一致すると、アコーディオンが展開されます (class="in")。検索フィールドがクリアされたら、アコーディオンを折りたたんだ状態に戻したいと思います。そのために、追加された class="in" を削除しようとしましたが、フィールドがクリアされたときに更新されていないようです。何か案は?
var $infoPanels = $('.panel-info'),
cachedText = [];
$infoPanels.each(function (i, v) {
cachedText[i] = $(this).text().toLowerCase();
});
$('#search-criteria').on('keyup', function () {
var g = $(this).val().toLowerCase();
if (g !== ""){
$infoPanels.parentsUntil('.accordion').hide().removeClass("in");
}
$.each(cachedText, function (i, v) {
if (g.length > 0 && v.indexOf(g) !== -1) {
$infoPanels.eq(i).show().parentsUntil('.accordion').addClass("in").show();
}
});
});
更新:else ifを追加することでこれが機能するようになりました。 Fiddleを参照してください。