У меня есть функция поиска, в которой отображаются только конкретные панели аккордеона, когда сопоставляется поисковый запрос. См. fiddle. Аккордеон расширяется (class = "in"), когда sth сопоставляется. Как только поле поиска будет очищено, я бы хотел, чтобы аккордеон вернулся к обрушению. Для этого я пытаюсь удалить добавленный класс = "in", но кажется, что он не обновляется, когда поле очищается. Есть идеи?jquery: как обновить событие keyup для аккордеона
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();
}
});
});
UPDATE: я получил эту работу, добавляя еще, если посмотреть Fiddle.
@Blitz Любая удача? –
Спасибо за помощь, Кевин. Когда поле поиска будет очищено, все исчезнет в вашем решении. Он должен удалить только класс, не скрывающий аккордеон. Но я использовал вашу идею, чтобы добавить else, если ([Fiddle] (http://jsfiddle.net/7Y87R/). Это очень хорошо работает в моей домашней версии, если я удаляю символы очень медленно, иначе только аккордеоны, совпадающие с поиском – Blitz
@Blitz Glad Я мог бы помочь! По общему признанию, я был немного не уверен в своих требованиях. Хорошая работа, выясняя это. –