0

我有以下在内部执行的代码行$(document).ready

$('#sliding_menu_area').toggle(effect, reAlign);

reAlign是在我的文件的$(document).ready主函数之外声明的函数。.js

我有一个名为的变量tag,它也在内部声明$(document).ready,我需要将变量传递给reAlign函数。我试过了

$('#sliding_menu_area').toggle(effect, reAlign(tag));

但它没有用。我可以将tag变量声明为全局变量,以便在外部声明的函数$(document).ready能够访问它吗?到目前为止,在内部声明的函数$(document).ready可以正常访问它。

有任何想法吗?

4

4 回答 4

3
$('#sliding_menu_area').toggle(effect, reAlign(tag));

您的代码reAlign使用tag参数执行,然后将返回值传递给toggle(作为第二个参数)。

$('#sliding_menu_area').toggle(effect, function() { reAlign(tag); });
于 2012-05-15T17:16:39.740 回答
2

我通常会避免使任何东西成为全球性的......或者至少尽可能地保留你的全球命名空间。例如,我有一个 Page 类,用于各种功能,例如 Page.notify("some message")。当我需要让整个页面都可以访问某些内容时,我会创建一个变量,例如 Page.Tag。如果您只需要 reAlign 方法的标签,那么请遵循 Karoly 的建议,并避免制作一些并不真正需要全局的全局。

于 2012-05-15T17:19:05.880 回答
1

Karoly 的回答有效,另一种选择是执行以下操作:https ://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind

$('#sliding_menu_area').toggle(effect, reAlign.bind(window, tag));

这将绑定您的函数,以便在调用它时将其window作为this变量调用,并将标记作为函数的第一个参数调用。基本上与 Karoly 建议的相同,但用语不同。

于 2012-05-15T17:20:24.667 回答
0

如果reAlign函数需要知道 DOM 元素(作为 传递this),最好使用:

$('#sliding_menu_area').toggle(effect, function () {
  reAlign.call(this, tag);
});
于 2012-05-15T17:20:23.240 回答