怎么找,哪一个叫我的功能?

时间:2011-07-04 13:56:30

标签: jquery

我有一个函数,由间隔函数调用,点击一个链接,我的链接将清除间隔,并再次调用相同的函数。

调用这些类型会做不同的工作,但我不知道如何找到,我的间隔函数是调用我的函数还是onclick函数调用我的函数..

如何找到我的函数调用者?

这是我的功能

function slideshow (){
    $('#slide_viewer ul').css({marginLeft : -(slideWidth * currentSlide)+'px'});
    if(currentSlide == (totalSlides-1)){
        currentSlide = 0;
    }else{
        currentSlide++;
    }

}
var myInterval = setInterval(slideshow,3000);

$('a.control').click(function(){
    currentSlide = ($(this).attr('id') == "prev") ? (currentSlide = currentSlide-1) : (currentSlide = currentSlide+1);
    slideshow ();
})

3 个答案:

答案 0 :(得分:2)

您可以使用

  arguments.callee.caller

找到谁在调用你的功能。

更简单的解决方案是在调用slideShow()时翻转全局变量。因此,当setInterval调用它时,您的全局变量将为false。

您也可以使用闭包和参数来区分案例

function slideshow(var autocall)
{
//your stuff depending of autocall false or true
}

var automaticall = function() 
{
   var autocall = true;
   slideshow(autocall);
}

var myinterval  = setInterval( automaticall , 3000 );


$('a.control').click(function(){
    currentSlide = ($(this).attr('id') == "prev") ? (currentSlide = currentSlide-1) : (currentSlide = currentSlide+1);
    slideshow (false);
})

答案 1 :(得分:1)

评论链接到一篇好帖子,或者您可以通过间隔调用将某些内容传递给您的函数:

var myInterval = setInterval(function()
{

    slideshow("interval");

},3000);

答案 2 :(得分:0)

有被叫方和来电者功能。但是今天在大多数浏览器中这些都被折旧T.T