timeOut上的JQuery简单滑块问题

问题描述 投票:1回答:2

我有一个名为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未定义

我该怎么办?

javascript jquery settimeout setinterval
2个回答
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);
    }); 
});

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.