JQuery将此函数传递给函数

问题描述:

我需要将this发送到capIn()和capOut()函数,以便我可以定位正确的.slide的子div。我如何将this传递给函数。 this将是什么徘徊。JQuery将此函数传递给函数

$(".slide").hover(function(){capIn();capOut();}); 
+1

那是你的实际代码?你除了调用这些函数什么都不做?你真的希望他们都要求'mouseenter'和'mouseleave'事件吗? – 2012-02-10 15:25:05

在函数名capIncapOut它是有道理的展望,他们是2点不同的行为。我相信你在mouseentermouseleave事件上有两种不同的行为。方法可以采取2种方法,一种为mouseenter,另一种为mouseleave。你可以试试这个

$(".slide").hover(capIn, capOut); 

您可以使用thiscapIncapOut它将指向你徘徊在​​元素。

function capIn(){ 
    var $childrens = $(this).children(); 
} 

function capOut(){ 
    var $childrens = $(this).children(); 
} 
+1

这可能是想要的,但它与问题中的代码不同。 – 2012-02-10 15:26:59

+0

我相信这是OP的最终要求。 – ShankarSangoli 2012-02-10 15:28:05

+0

请注意,您的代码与OP的代码不同。 OP在'mouseenter'和'mouseleave'上都调用这两个函数。你的代码在'mouseenter'上调用'capIn',在'mouseleave'上调用'capOut'。现在,从OP的功能名称来看,这可能是他们真正想要的,但我仍然会强调它。 – 2012-02-10 15:28:08

$(".slide").hover(function(){ 
    capIn.apply(this); 
    capOut.apply(this); 
}); 

在这里看到:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/apply

UPDATE:

如果capInmouseentercapOutmouseleave,则:

$(".slide").hover(function(){ 
    capIn.apply(this); 
}, function(){ 
    capOut.apply(this); 
}); 

ShankarSangoli的解决方案更为简洁,但是如果除this之外需要传递任何参数,则可以使用:capIn.apply(this, arguments)

+1

这不应该得到-1。它正确地复制了问题中的代码,但在函数中设置了“this”值。我唯一需要添加的就是发送'arguments'以防万一需要'event'或任何自定义参数。 – 2012-02-10 15:26:20

+0

对不起,你是对的 – ori 2012-02-10 15:27:55

+1

在第二个例子中,不需要'... hover(function(){capIn.apply(this);},function(){capOut.apply(this);})' ,只是......悬停(capIn,capOut)'。在第一个例子中,从@ amnotiam的角度来看,它将是'capIn.apply(this,arguments);'。 – 2012-02-10 15:43:11

这个工作对我来说:

function capOut(jq) { 
    alert(jq.hasClass('slide')) 
} 

$(".slide").hover(function() { 
    capIn(this), 
    capOut($(this)) //to pass a jQuery object wrapping 'this' 
});