【问题标题】:JQuery pass this to functionJQuery 将此传递给函数
【发布时间】:2012-02-10 15:21:27
【问题描述】:

我需要将this 发送到 capIn() 和 capOut() 函数,以便我可以定位正确 .slide 的子 div。如何将this 传递给函数。 this 将是悬停的内容。

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

【问题讨论】:

  • 那是你的实际代码吗?你除了调用这些函数什么都不做吗?你真的希望他们都调用mouseentermouseleave 事件吗?

标签: javascript jquery function hover this


【解决方案1】:

查看函数名称 capIncapOut 可以看出它们是两种不同的行为。我相信您在 mouseentermouseleave 事件上有两种不同的行为。 hover 方法可以采用两种方法,一种用于mouseenter,另一种用于mouseleave。你可以试试这个

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

您可以在capIncapOut 中使用this,它将指向您悬停的.slide 元素。

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

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

【讨论】:

  • 这可能是我们想要的,但它与问题中的代码不同。
  • 我相信这是OP的终极要求。
  • 请注意,您的代码与 OP 的代码不同。 OP 在mouseentermouseleave 上调用这两个函数。您的代码在mouseenter 上调用capIn,在mouseleave 上调用capOut。现在,从 OP 函数的名称来看,这可能是他们真正想要的,但我仍然会强调它。
  • 查看函数名称 capIncapOut 可以理解它们是两种不同的行为。可能是 OP 不知道 hovermouseentermouseleave 使用 2 个不同的处理程序。
  • 是的,这也是我的赌注,但我同意@T.J.Crowder 的观点,最好在答案中注明。
【解决方案2】:
$(".slide").hover(function(){
    capIn.apply(this);
    capOut.apply(this);
});

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

更新:

如果capIn 代表mouseentercapOut 代表mouseleave,则:

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

ShankarSangoli的解决方案比较简洁,但是如果除了this之外还需要传递任何参数,那么:capIn.apply(this, arguments)可以使用。

【讨论】:

  • 这不应该是-1。它正确复制了问题中的代码,但在函数中设置了 this 值。我唯一要添加的是发送arguments,以防需要event或任何自定义参数。
  • 在第二个示例中,不需要...hover(function() { capIn.apply(this); }, function() { capOut.apply(this); }),只需...hover(capIn, capOut)。在第一个示例中,根据@amnotiam 的观点,应该是capIn.apply(this, arguments);
  • .hover(capIn.apply(this), capOut.apply(this)) 不起作用。 fn.apply(...) 是一个函数调用,所以你需要将它包装在一个匿名函数中。
【解决方案3】:

这对我有用:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-15
    • 2011-12-07
    • 2013-06-25
    • 1970-01-01
    • 2013-04-06
    • 2010-09-27
    • 1970-01-01
    • 2013-01-27
    相关资源
    最近更新 更多