Не работает callback
Доброго времени суток. Не работает callback. подскажите, пожалуйста, почему ?
$('#menu #flavor').slideUp(400, 'easeOutQuart', function() { $(this).text( translate($('#menu #'+x).attr('alt')) ).slideDown(800, 'easeOutQuart') }); |
Synov_son,
что за функция translate ? откуда x ? живой макет лучше вырванной строки |
F12 нажми!
|
$('#menu #flavor').slideUp(400, 'easeOutQuart', function() { $(this).text( 'Слово' ).slideDown(800, 'easeOutQuart') }); Было так: $('#menu #flavor').slideUp(400, 'easeOutQuart').text('Слово').slideDown(800, 'easeOutQuart'); Но мне не нравиться что текст вставляется до того как исчезнет((( Спасибо danik.js Работает $('#menu #flavor').slideUp(400, 'easeOutQuart', function(x) { $(this).text( translate($('#menu #'+x).attr('alt')) ).slideDown(800, 'easeOutQuart') }); |
Только теперь параметр x, который я передаю функции undefined внутри нее(((
|
Synov_son,
где вы x то берёте ? Цитата:
партизаны несдавались |
x это параметр цикла который перебирает картинки и по их id переводит с английского на русский атрибуты и вставляет эту строку в блок.
$('#menu #flavor').text( translate($('#menu #'+x).attr('alt')) передача вот function(x) - callback функция |
Передача в этом коде
$('#menu #flavor').slideUp(400, 'easeOutQuart', function(x) { $(this).text( translate($('#menu #'+x).attr('alt')) ).slideDown(800, 'easeOutQuart') }); |
Цитата:
|
Цитата:
|
Хорошо так тоже не работает
function change_text(x){ $('#flavor').slideUp(400, 'easeOutQuart', function(x) { $(this).text( translate($('#menu #'+x).attr('alt')) ).slideDown(800, 'easeOutQuart') }); } |
$(document).ready(function() {change_text(1);}); |
Synov_son,
:cray: var x = 'пятое-десятое'; function фонарь(id) { $(this).text( translate($('#menu #'+id).attr('alt')) ).slideDown(800, 'easeOutQuart') } $('#menu #flavor').slideUp(400, 'easeOutQuart', function() { фонарь(x) }); |
Да, не работает. Теперь опишу более детально:
вот функция, элементы перемещаются по координатам которые записаны в массив 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 и переводятся функциями. Помогите, пожалуйста((( |
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); }); |
Synov_son,
или так для варианта function change_flavor_text(id) { var str = translate($('#menu #' + id).attr('alt')) return function () { $('#menu #flavor').text(str).slideDown(800, 'easeOutQuart') } } |
Рони, Большое Вам Пребольшое Спасибо !!!!!:dance: :dance: :dance:
|
Часовой пояс GMT +3, время: 19:34. |