2012-03-21 23 views
4

参数传递给另一个函数我有这样的:我可以通过“本”是在javascript

$('#slider li').click(function() { 
    var stepClicked = $(this).index(); 
    alert(stepClicked); 
    if (stepClicked != 0) { 
     $('#cs_previous').removeClass('cs_hideMe'); 
    } else { 
     $('#cs_previous').addClass('cs_hideMe'); 
    } 

    $('li.cs_current').removeClass('cs_current'); 
    $($(this)).addClass('cs_current'); 


    moveToNextImage(stepClicked); 

    function moveToNextImage(stepClicked) { 
     alert(stepClicked); 
     var currentIs = $('li.cs_current').index(); 
     var newLeftEdge = currentIs - stepClicked; 
     $('.cs_riskStageImage').fadeTo(200, .2).animate({ 
      left: newLeftEdge 
     }, "fast").fadeTo(200, 1); 
    }; 
}); 

警报显示了适当的指数为里点击,当我提醒最后一个函数我内变量打电话,moveToNextImage(stepClicked),同样的值显示,但动画没有发生。这工作许多其他方式,但我试图通过单击列表项的索引值用于计算数学。

..或者我可以将该值转换为第一个函数中的另一个变量,我可以传递给第二个函数?

+0

“我可以通过”这个“作为参数传递给JavaScript中的另一个函数” - 是的,你可以,它是一个普通的变量,引用当前对象。有什么问题呢? – zerkms 2012-03-21 20:40:28

+0

http://www.quirksmode.org/js/this.html – zod 2012-03-21 20:41:05

+1

'$($(this))'应该只是'$(this)'。 – 2012-03-21 20:45:47

回答

1

的JavaScript函数call()apply()都是为了呼叫的目的上下文中的函数。

function sum() { 
    return this.num1 + this.num2; 
} 

function callSum(num1, num2) { 
    this.num1 = num1 
    this.num2 = num2 
    return sum.call(this);  //call sum() in the context of this 
} 

alert(callSum(10, 15)); 

function applySum(num1, num2) { 
    this.num1 = num1 
    this.num2 = num2 
    return sum.apply(this); //call sum() in the context of this 
} 

alert(applySum(30, 45)); 

jsfiddle example link

现在在sum()功能this关键字有相同的情况下,因为它在callSum()applySum()功能一样。

call()apply()之间的区别是,应用的第二个参数是一组参数来传递或arguments对象。

+0

我认为这个问题是,因为+是一个数值运算符和字符串concantenation,当我尝试添加变量持有“this”与另一个变量,结果是一个新的字符串....我需要解析索引值,以保持它我想数字....感谢所有这些,我需要仔细考虑这一切,并且我会标记适当的回应。 – 2012-03-21 22:00:23

+0

当然不用担心。请记住,虽然其他人会搜索问题的标题,所以如果您标记回答标题中的问题,这对他们最有利。如果将来您确实需要在某个上下文中调用某个方法,则这些是javascript语言提供的方法。 – 2012-03-21 22:18:54

3

您可以通过这个给另一个函数一样

moveToNextImage(this, stepClicked); 

function moveToNextImage(obj, stepClicked) { 
    var index = $(obj).index; 
} 

在你的代码是什么这行的意思是

$($(this)).addClass('cs_current'); 

应该像

$(this).addClass('cs_current'); 
+0

是的,正确的...我正在尝试其他的东西瓦特/索引和values..this应该只是$(this)... kj – 2012-03-21 22:02:12