JQuery将此函数传递给函数
我需要将this
发送到capIn()和capOut()函数,以便我可以定位正确的.slide的子div。我如何将this
传递给函数。 this
将是什么徘徊。JQuery将此函数传递给函数
$(".slide").hover(function(){capIn();capOut();});
在函数名capIn
和capOut
它是有道理的展望,他们是2点不同的行为。我相信你在mouseenter
和mouseleave
事件上有两种不同的行为。方法可以采取2种方法,一种为mouseenter
,另一种为mouseleave
。你可以试试这个
$(".slide").hover(capIn, capOut);
您可以使用this
内capIn
和capOut
它将指向你徘徊在元素。
function capIn(){
var $childrens = $(this).children();
}
function capOut(){
var $childrens = $(this).children();
}
这可能是想要的,但它与问题中的代码不同。 – 2012-02-10 15:26:59
我相信这是OP的最终要求。 – ShankarSangoli 2012-02-10 15:28:05
请注意,您的代码与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:
如果capIn
是mouseenter
和capOut
是mouseleave
,则:
$(".slide").hover(function(){
capIn.apply(this);
}, function(){
capOut.apply(this);
});
ShankarSangoli
的解决方案更为简洁,但是如果除this
之外需要传递任何参数,则可以使用:capIn.apply(this, arguments)
。
这不应该得到-1。它正确地复制了问题中的代码,但在函数中设置了“this”值。我唯一需要添加的就是发送'arguments'以防万一需要'event'或任何自定义参数。 – 2012-02-10 15:26:20
对不起,你是对的 – ori 2012-02-10 15:27:55
在第二个例子中,不需要'... 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'
});
那是你的实际代码?你除了调用这些函数什么都不做?你真的希望他们都要求'mouseenter'和'mouseleave'事件吗? – 2012-02-10 15:25:05