Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не работает callback (https://javascript.ru/forum/jquery/44895-ne-rabotaet-callback.html)

Synov_son 06.02.2014 02:05

Хорошо так тоже не работает
function change_text(x){
	$('#flavor').slideUp(400, 'easeOutQuart', function(x) {
				$(this).text( translate($('#menu #'+x).attr('alt')) ).slideDown(800, 'easeOutQuart')
	});
}

Synov_son 06.02.2014 02:07

$(document).ready(function() {change_text(1);});

рони 06.02.2014 02:09

Synov_son,
:cray:
var x = 'пятое-десятое';
function фонарь(id) {


                $(this).text( translate($('#menu #'+id).attr('alt')) ).slideDown(800, 'easeOutQuart')


            }

$('#menu #flavor').slideUp(400, 'easeOutQuart', function() {


               фонарь(x)


            });

Synov_son 06.02.2014 02:25

Да, не работает. Теперь опишу более детально:
вот функция, элементы перемещаются по координатам которые записаны в массив css этот
function rotate(css){
	for(i=0;i<css.length;i++){
		n = $('#menu #'+i).data('number')+1;
		if(n==css.length){n=0}
		$('#menu #'+i).animate({'top':css[n][0],'left':css[n][1]}, 1200, 'easeOutQuart');
		$('#menu #'+i).data('number', n);
		if(n==0){
			$('#menu #flavor').slideUp(400, 'easeOutQuart', function(){change_flavor_text(i)});
		}
	}
}
function change_flavor_text(id){
	$('#menu #flavor').text( translate($('#menu #'+id).attr('alt')) ).slideDown(800, 'easeOutQuart')
}
$(document).ready(function() {
var сss = new Array([221,44],[45,65],[23,54]);
setInterval(function(){rotate(css)}, 3000);});

Элементы перемещаются успешно и нужно сделать что бы при попадании элемента в координату css[0] в блоке flavor высвечивалась надпись.
Высвечивается только надпись элемента с id=css.length (а это на один больше чем существует). Надписи хранятся у элементов в атрибуте alt и переводятся функциями. Помогите, пожалуйста(((

рони 06.02.2014 02:40

Synov_son,
попробуйте так
function rotate(css) {
    for (i = 0; i < css.length; i++) {
        n = $('#menu #' + i).data('number') + 1;
        if (n == css.length) {
            n = 0
        }
        $('#menu #' + i).animate({
            'top': css[n][0],
            'left': css[n][1]
        }, 1200, 'easeOutQuart');
        $('#menu #' + i).data('number', n);
        if (n == 0) {
            $('#menu #flavor').slideUp(400, 'easeOutQuart', change_flavor_text(i));
        }
    }
}

function change_flavor_text(id) {
    return function () {
        $('#menu #flavor').text(translate($('#menu #' + id).attr('alt'))).slideDown(800, 'easeOutQuart')
    }
}
$(document).ready(function () {
    setInterval(function () {
        rotate(css)
    }, 3000);
});

рони 06.02.2014 02:43

Synov_son,
или так для варианта
function change_flavor_text(id) {
    var str = translate($('#menu #' + id).attr('alt'))
    return function () {
        $('#menu #flavor').text(str).slideDown(800, 'easeOutQuart')
    }
}

Synov_son 06.02.2014 04:10

Рони, Большое Вам Пребольшое Спасибо !!!!!:dance: :dance: :dance:


Часовой пояс GMT +3, время: 19:57.