Я пытался быть таким же подробным, как и общее в названии, но оно все равно получилось расплывчатым. Итак, я уточню здесь:
У меня есть следующий HTML:
<span class="item c1"><!--content--></span>
<span class="item c2"><!--content--></span>
<span class="item c3 c2"><!--content--></span>
<span class="item c1"><!--content--></span>
<span class="item c1 c4"><!--content--></span>
Хорошо, поэтому размер гипотетического <!--content-->
всегда различен, что - в данном случае - означает, что ширина элементов также будет другой.
Итак, мне нужно как-то «отфильтровать» контент по их классам. По сути, мне нужно, чтобы они исчезли и снова появились, когда выбран фильтр.
Я заставляю их исчезать, устанавливая их ширину 0px
и непрозрачность 0
- все это происходит переходным образом, используя jQuery .animate()
.
В момент загрузки DOM я сохраняю их «оригинальную» ширину в атрибуте data-*
:
jQuery(function(){
jQuery('.item').each(function(i, e) {
var $e = jQuery(e);
$e.data( 'origWidth', $e.css('width') );
});
});
Теперь, когда они отображаются снова (или повторно фильтруются, если хотите), они все получают одинаковую ширину (я знаю почему, но я не знаю, как обойти это):
jQuery('.c'+id+'.item').stop().animate({
'width' : jQuery('.c'+id+'.item').data('origWidth'),
'opacity' : 1
});
//NOTE: the [id] in the above snippet is passed by a
//function and is the category id.
Итак, мои "настоящие" вопросы: есть ли способ синхронно перебирать массив jQuery и анимировать атрибуты & ndash; или что-то в этом роде.
Спасибо!