延迟后的行动

时间:2009-11-26 14:42:22

标签: jquery

我的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是否正确。

5 个答案:

答案 0 :(得分:9)

您需要将函数作为第一个参数传递给setTimeout。变化

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

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

这将在1秒后更改元素的overflow

答案 1 :(得分:2)

这里有一些问题。

  1. $('slideToBuyBottomBtnClosed')会尝试查找所有带有标签名称的元素,即<slideToBuyBottomBtnClosed>元素。您可能希望在开始时使用哈希值来选择id,或者使用点来按类名选择,具体取决于您的代码。

  2. 有一些拼写错误(sildeToBuyContent)

  3. 出现超时的实际问题,问题出现在这一行:

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

  4. 说到这里,它会在将括号内容传递给setTimeout函数之前对其进行评估,就像输入function(3 + 2)时一样。如果你想在一秒钟之后运行它,你可以传递一个像这样的实际函数:

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

    或作为要评估的字符串(虽然这在我看来更加混乱);

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

    还有这种方法,可能在你的情况下不起作用,但它可以节省你创建另一个匿名函数:

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

答案 2 :(得分:0)

您可以使用Timers Plugin

答案 3 :(得分:0)

setTimeout()的第一个参数是一个函数或一串代码,所以请尝试:

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

答案 4 :(得分:0)

感谢您的帮助。你帮助了我很多。

我不想打扰你,但是你们对这个动作有一个想法,为什么它不会工作:(

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

我希望通过鼠标悬停所有&lt;李&GT;在&lt; ul class =“sf.menu”&gt; - 也是&lt;李&GT;在&lt;第二级&lt;第二级ul class =“sf.menu”&gt; ID #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();
      }
    );
  }
);