2010-05-20 3 views
0

Я пытаюсь вызвать последовательность эффектов (простое анимированное шоу/скрыть) в группе изображений внутри div, где изображения помечены именами классов, которые обеспечивают фильтрацию через селектор классов.jQuery queue на совпадающем наборе

<div id="myDiv"> 
    <img class="tag1 tag2 tag3" ... /> 
    <img class="tag2 tag3" ... /> 
    <img class="tag1 tag2" ... /> 
    ...more image tags... 
</div> 

Теперь я хочу, чтобы показать изображения, соответствующие метки, как:

$('#myDiv .tag1').hide('blind', {}, 300);  
$('#myDiv .tag2').show('blind', {}, 300); 

Где tag1 была старая активная метка и tag2 является новым активным тегом. Я думал, что могу просто отказаться от функции show в обратном вызове вызова функции hide, но он вызывает многократно вызов метода show (столько же раз, сколько и элементов, скрытых при первом вызове).

Может ли кто-нибудь предложить, как использовать обратный вызов только один раз на первом согласованном наборе или предоставить другой способ использования очереди jQuery, чтобы последовательно вывести их? Задача, которую я вижу, заключается в том, что эффект шоу не обязательно влияет на те же изображения, которые были поражены эффектом hide.

Одна вещь, которую я пробовал, состояла в использовании элемента облегчения, в котором я мог бы присоединять эффекты (например, назначать их в очереди на myDiv), но я не мог понять, как правильно это сделать.

Спасибо!

ответ

1

Что бы я сделал, это сделать переменную, которую вы можете сохранить, если шоу было запущено, а затем завершите вызов для показа в чеке. Когда-либо событие запускает шкуры перед тем, как вы их перезапустите, сбросьте эту переменную. Это должно гарантировать, что шоу будет стрелять только один раз после шкурок.

var fired = false; 

function showhide() 
{ 
    fired=false; 
    $('#myDiv .tag1').hide('blind', function(){ 
    if(!fired) 
    { 
     fired=true; 
     $('#myDiv .tag2').show('blind', {}, 300); 
    } 
    }, 300); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^