创建 jQuery 回调时指定参数

发布于 2024-11-30 18:21:25 字数 372 浏览 0 评论 0 原文

我正在编写一个 jQuery 插件,并尝试设置一个带有一些参数的回调。 jQuery 如何确定将哪些参数发送到回调函数?

插件中:

if (callback) {
    callback.call(var1, var2, var3);
}

写的回调:

$("#div").myplugin({callback: myfunction});
myfunction(biz,bar,bim) {
    alert("I love " + biz + " and " + bar + " and " + bim);
}

biz设置为var2,bar设置为var3,bim未定义。

I'm writing a jQuery plugin and I'm trying to set up a callback that takes a few parameters. How does jQuery determine which parameters are to be sent to a callback function?

In the plugin:

if (callback) {
    callback.call(var1, var2, var3);
}

The written callback:

$("#div").myplugin({callback: myfunction});
myfunction(biz,bar,bim) {
    alert("I love " + biz + " and " + bar + " and " + bim);
}

biz is set to var2, bar is set to var3, and bim is undefined.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

何以笙箫默 2024-12-07 18:21:25

call 函数的第一个参数很特殊:

fun.call(thisArg[, arg1[, arg2[, ...]]])

其中 thisArg

为调用 fun 提供的 this 值。

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects /Function/call

因此,如果您为 thisArg 传递一个值,它就会起作用:

callback.call(this, var1, var2, var3);

或者,更简单地说,如果您传递一个值,则根本不要使用 call回调中不需要 this

callback(var1, var2, var3);

The first argument of the call function is special:

fun.call(thisArg[, arg1[, arg2[, ...]]])

where thisArg is

The value of this provided for the call to fun.

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/call

So, it would work if you passed a value for thisArg:

callback.call(this, var1, var2, var3);

Or, more simply, don't use call at all if you don't need this in the callback:

callback(var1, var2, var3);
甜宝宝 2024-12-07 18:21:25

我相信您会在此帖子

基本上有几种方法可以实现您想要的目标。如果您查看帖子中的最后一个示例,您会看到一个 args.push(arguments[i]); 行,它可以使用 apply 调用的唯一两个参数将多个参数传递给函数。

正如这里所说,call方法类似,你必须将所有函数参数放在call方法的第二个参数中。

I believe you'll find the answer in this post.

Basically there are several ways of achieving the goal you want. If you look down the post to the last example, you have an args.push(arguments[i]); line that may pass several parameters to the function using the only two arguments for the apply call.

As said here, the call method is similar, you have to put all the function arguments in the second parameter of the call method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文