gpt4 book ai didi

javascript/jquery - 在函数中设置 (this)

转载 作者:行者123 更新时间:2023-11-29 18:36:02 26 4
gpt4 key购买 nike

大家好。基本上,我的函数中需要“(this)”来对应这个选择:

$(".widget .portfolio img")

但我想要运行此函数的替代方法,一种是在它被调用时,另一种是间隔运行,如下所示:

function cycle()
{
var poo = $(this).attr("id");
$(".poo").html(poo);
}

$(".widget .portfolio img").click(function() {
cycle();
});

setInterval(function() {
cycle();

}, 4000);

});

问题是当间隔运行时,“(this)”函数的值是 setInterval 函数的值 - 但我希望它是我上面所说的选择......如果我能做这样的事情,这将是理想的:

setInterval(function() {
cycle($(".widget .portfolio img"));
...

我想我只需要在函数中做一些简单的事情……有什么想法吗?提前致谢:)

最佳答案

您可以使用 call()apply()或使用 jQuery 1.4+ jQuery.proxy() .

使用 call()/apply()(它们之间的唯一区别是将参数传递给函数)。每个函数都可以使用 call/apply 调用,第一个参数将是函数调用的上下文 (this),第二个/更多参数是函数的参数。 apply() 将函数参数作为一个数组,其中 call() 单独获取它们。

var $imgs = $('.widget .portfolio img'), imgNum = -1;

setInterval(function() {
imgNum = (imgNum + 1) % $imgs.length;
// to simulate cycling through the items for instance?

cycle.call($imgs.get(imgNum));
},4000);

jQuery.proxy()

此函数略有不同(并不真正适用于这种情况),但也可用于为函数设置 this 上下文。 proxy() 所做的是接受一个函数,并返回另一个调用原始函数的函数,将其上下文强制为您指定的内容。 Here's an example使用 $.proxy() 将调用映射到始终在调用对象的上下文中。

关于javascript/jquery - 在函数中设置 (this),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3086202/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com