timeOut上的JQuery简单滑块问题

时间:2011-06-18 16:40:58

标签: javascript jquery settimeout setinterval

我有一个名为slideMe()的函数,我需要为每个滑块链接启动延迟几秒钟。

jquery版本是1.4.2

代码是:

$(document).ready(function(){
    var img_id;
    var clicked;

 function slideMe(img_id){

       $('.slider-menu-item').css('color','#fff');
       $('#'+img_id).css('color','#EBE1B9');
       $('.slider-img').hide();
       $('#slider-img-'+img_id).fadeIn(600);

    };

$.each($('.slider-menu-item'),function(){

   img_id = $(this).attr("id");
   setTimeout("slideMe()",900);

    console.log(img_id)

});
   $('.slider-menu-item').live('click',function(){
       img_id = $(this).attr("id");
       clicked = 1;
    slideMe(img_id);
}); 

});//end document.ready

但在控制台日志中,我收到错误消息:

  

slideMe未定义

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您需要在document.ready处理程序之外定义slideMe函数。最好直接将方法传递给setTimeout而不是使用字符串。此外,slideMe方法需要一个参数,因此请确保传递它:

function slideMe(img_id) {
    $('.slider-menu-item').css('color', '#fff');
    $('#' + img_id).css('color', '#EBE1B9');
    $('.slider-img').hide();
    $('#slider-img-' + img_id).fadeIn(600);
}

$(document).ready(function() {
    var img_id;
    var clicked;

    $('.slider-menu-item').each(function() {
        img_id = $(this).attr('id');
        setTimeout(function() {
            slideMe(img_id);    
        }, 900);
    });

    $('.slider-menu-item').live('click',function() {
        img_id = $(this).attr("id");
        clicked = 1;
        slideMe(img_id);
    }); 
});

答案 1 :(得分:0)

尝试slideMe=function(){...}而不是function slideMe(){...}