function initItems($items, current, count) {
$items.removeClass('z-item-current');
$items.each(function(index) {
var $self = $(this);
$self.data('z-item-index', index);
if(index === current) {
$self.addClass('z-item-current z-item-show');
var pre = current - 1,
next = current + 1;
pre = pre < 0 ? count - 1 : pre;
next = next > count - 1 ? 0 : next;
$($items[pre]).addClass('z-item-previous z-item-show');
$($items[next]).addClass('z-item-next z-item-show');
}
});
// reselect or filter $items
// if has z-item-show class, show it; otherwise, hide it.
};
Как показывает код выше, я хочу повторно выбрать/фильтровать объект jQuery. Чтобы быть конкретным, я хочу разделить $items
на $items with z-item-show class
и $items without z-item-show class
.Как повторно выбрать элементы фильтра, когда у меня уже есть объект jquery?
В настоящее время $items.each
- это подход, а $items.parent().find
- это еще один.
Любой другой подход (более элегантный)?
Просто побочное примечание: '$ ($ пунктов [предварительно])' может быть лучше достигнуты с помощью ' eq() ':' $ items.eq (pre) ' – George
@George да, более элегантный. – creeper
Можете ли вы собрать простой [jsfiddle] (http://jsfiddle.net/)? Я предполагаю, что ваша проблема заключается в сбросе предыдущего/следующего для ранее выбранного элемента. Вы должны иметь возможность отслеживать «текущий» и показывать/скрывать отдельный элемент на основе следующих и предыдущих значений для этого, аналогично тому, что вы делаете для нового выбора. – Rhumborl