jquery Custom Queues

0

Witam,

Trochę bawię się w swojej niewielkiej aplikacji z custom queues. Chciałbym mieć kilka różnych queues z różnymi nazwami, dzięki czemu w pewnych mógłbym np. czyścić kolejkę.

O ile domyślne queue działa prawidłowo (poprzedza je krótkie opóźnienie, mogę wykonać to wiele razy w czasie działania aplikacji)

el.delay(500)
	.queue(function() {
		el.css({
			width: actWidth - (valChange1) / 2,
			height: actHeight - (valChange1) / 2,
			'border-radius': actRadius - (valChange1) / 2,
			'margin-left': actML + (valChange2) / 2,
			'margin-top': actMT + (valChange2) / 2 
		}).dequeue();					
	});

O tyle gdy dodam nazwę do queue to już nie działa (nie ma błędów w konsoli, akcja się nie wykonuje)

el.delay(500)
				.queue('abc', function() {
					el.css({
						width: actWidth - (valChange1) / 2,
						height: actHeight - (valChange1) / 2,
						'border-radius': actRadius - (valChange1) / 2,
						'margin-left': actML + (valChange2) / 2,
						'margin-top': actMT + (valChange2) / 2 
					}).dequeue('abc');					
				});

el to element tworzony dynamicznie, ale skoro działało bez nazwy to tu też chyba nie powinno mieć żadnego znaczenia ?

Opierałem się na przykładzie z nazwą stąd https://learn.jquery.com/effects/queue-and-dequeue-explained/

1

u mnie działa https://jsfiddle.net/g3g00nsj/

losowo wykonuje się queue a lub b, następnie domyślna queue fx

queue("abc", function() {}).dequeue("abc");

w twoim kodzie dequeue jest zchainowane z css

0

Już udało mi się rozwiązać problem analizując różne przykłady ze stron jquery.

Chodziło mi mniej więcej o taki mechanizm

$(document).ready(function(){
	$( "#box" ).on('click', function(){
		$(this).clearQueue("steps").queue( "steps", function( next ) {
        	console.log( "Step 1" );
        	next();
    	} )
    	.delay(1000, "steps").queue( "steps", function( next ) {
    	    console.log( "Step 2" );
    	    next();
    	} )
    	.delay(500, "steps").queue( "steps", function( next ) {
    	    console.log( "Step 3" );
    	    next();
    	} )
    	.delay(300, "steps").queue( "steps", function( next ) {
    	    console.log( "Step 4" );
    	    next();
    	} ).dequeue("steps")
	});
});

Ale z racji, że lepiej wiedzieć niż nie wiedzieć, mam jeszcze kilka pytań :) .

Dlaczego kod w queue mogę wykonać tylko jeden raz ? Przecież nic nie blokuje kolejki, ani nigdzie jej nie czyszczę ?

$(document).ready(function(){
	$('#box').on('click', function(){
		console.log('klik1');
		$(this).delay(1000).queue(function(){
			console.log('klik2');
		});
	});
});

Kod mogę wykonać wiele razy, ale dlaczego teraz delay nie jest brany pod uwagę ? Przecież nie nadawałem żadnej nowej nazwy do queue, więc i to i delay są przypisane do domyślnej kolejki 'fx'.

$(document).ready(function(){
	$('#box').on('click', function(){
		console.log('klik1');
		$(this).delay(1000).queue(function(){
			console.log('klik2');
		}).dequeue();
	});
});

Dzięki za sugestie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1