我在$(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
内声明的函数可以正常访问它。
有什么想法吗?
答案 0 :(得分:3)
$('#sliding_menu_area').toggle(effect, reAlign(tag));
您的代码使用reAlign
参数执行tag
,然后将返回值传递给toggle
(作为第二个参数)。
$('#sliding_menu_area').toggle(effect, function() { reAlign(tag); });
答案 1 :(得分:2)
我通常会避免创建任何全局...或者至少尽可能保留您的全局命名空间。例如,我有一个Page类,我将其用于各种函数,例如Page.notify(" some message")。当我需要让整个页面可以访问某些内容时,我会创建一个像Page.Tag这样的变量。如果您只需要reAlign方法的标记,那么请遵循Karoly的建议,避免创建一些并不真正需要全球化的东西。
答案 2 :(得分: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所说的一样,用不同的习语。
答案 3 :(得分:0)
如果reAlign
函数需要知道DOM元素(传递为this
),最好使用:
$('#sliding_menu_area').toggle(effect, function () {
reAlign.call(this, tag);
});