2009-11-26 3 views
2

У меня проблема с этим сценарием jquery.действие после задержки

toggle:function() 
{ 
if(this.opened){ 
    $("slideToBuyBottomBtnClosed").setStyle("display","block"); 
    $("slideToBuyBottomBtnOpen").setStyle("display","none"); 
    $("sildeToBuyContent").setStyle("overflow","hidden"); 
    this.openOrCloseEffect.start({height:0}); 
    this.opened=false 
}else{ 
    $("slideToBuyBottomBtnClosed").setStyle("display","none"); 
    $("slideToBuyBottomBtnOpen").setStyle("display","block"); 
    setTimeout($("sildeToBuyContent").setStyle("overflow","visible"), 1000); 
    this.openOrCloseEffect.start({height:182}); 
    this.opened=true 
} 
} 

Я борюсь с setTimeout - мне нужно, чтобы иметь эту линию:

$("sildeToBuyContent").setStyle("overflow","visible"); 

начал с секундной задержкой 1, но я не знаю, если setTimeout это правильный путь.

+1

Слишком много поваров! –

ответ

9

Вам необходимо передать функцию в качестве первого аргумента в setTimeout. Изменение

setTimeout($("sildeToBuyContent").setStyle("overflow","visible"), 1000); 

в

setTimeout(function() { $("sildeToBuyContent").setStyle("overflow","visible") }, 1000); 

Это изменит overflow элемента через 1 секунду.

+0

Удивительный! Спасибо, вы помогли мне с проблемой, с которой я сражался больше дня: D –

+1

тогда вы должны принять как ответ –

+0

Im новый здесь и все еще узнающий, как это место работает :) –

0

первый аргумент setTimeout() функция или строка кода, так что попробуйте:

setTimeout('$("sildeToBuyContent").setStyle("overflow","visible")', 1000); 
2

Там несколько вещей, которые здесь не так.

  1. $('slideToBuyBottomBtnClosed') будет пытаться найти все элементы с тем, что в качестве имени тега, то есть <slideToBuyBottomBtnClosed> элементов. Вероятно, вы захотите использовать хэш в начале для выбора по id или точку для выбора по имени класса, в зависимости от вашего кода.

  2. Там есть пара опечаток (sildeToBuyContent)

  3. Coming фактического выпуска тайм-аута, проблема в этой строке:

    setTimeout($("sildeToBuyContent").setStyle("overflow","visible"), 1000)

Когда он приходит сюда , он будет оценивать содержимое скобок перед передачей их функции setTimeout, так же, как если бы вы набрали function(3 + 2). Если вы хотите, чтобы бежать за одну секунду, вы можете передать его фактическую функцию следующим образом:

setTimeout(function() { 
    $('#slideToBuyContent').setStyle("overflow", "visible"); 
}, 1000); 

или в виде строки, которая будет оценена (хотя это намного грязнее, на мой взгляд);

setTimeout("$('#slideToBuyContent').setStyle('overflow', 'visible')", 1000); 

Там же этот метод, который, вероятно, не будет работать в вашей ситуации, но это позволит сэкономить вам создать другую анонимную функцию:

setTimeout($('#slideToBuyContent').setStyle, 1000, 'overflow', 'visible'); 
0

Спасибо за вашу помощь. Вы мне очень помогли.

Я не хочу вас беспокоить, но у вас, ребята, есть идея для этого действия, почему она не будет работать :(

$("ul.sf-menu li").mouseover(function(){ 
    $("#sildeToBuyContentWindow").css("overflow","visible"); 
}); 

я хочу что при наведении курсора всех < li> в < уль класса = "НФ. меню «> - также < лития> во втором на третьем уровне < ул класс =». sf.menu "> переполнение элемента с идентификатором #sildeToBuyContentWindow изменения в видимую

это код оригиналов я использовал, чтобы убить свое действие, но безуспешно.

$(document).ready(
    function(){ 
    $('#switches li').mouseover(
     function(){ 
     $("#slides div").hide(); 
     $('#switches li').css('font-weight', 'normal'); 
     $(this).css('font-weight', 'bold'); 
     $('#slide' + $(this).attr('id').replace('switch', '')).show(); 
     } 
    ); 
    } 
); 
+0

Я решил это - был конфликт с библиотекой mootools –

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