jQuery:全局变量命名空间问题

时间:2011-01-16 19:53:39

标签: javascript jquery

有没有办法在jQuery的自己的命名空间中声明一个全局变量?

当然,我可以用普通的旧JavaScript声明全局变量,但它们会落在window的命名空间中。例如,如果我有一个名为document的变量,它肯定会覆盖document的{​​{1}}对象。

jQuery是否有一个哈希表,允许您按名称存储任何对象?

感谢。

3 个答案:

答案 0 :(得分:4)

不确定为什么要使用jQuery?您可以创建自己的命名空间:

var namespace = {
    document : "Foo"
};

请详细说明,如果有某些需要以某种方式使用jQuery。

答案 1 :(得分:2)

当然可以。创建一个名称空间作为对象,然后将其附加到jQuery函数。

(function ($) {

  $.myNamespace = {};

})(jQuery);

在这里,我创建了一个自动执行的匿名函数来完成工作。然后我可以在此函数内的命名空间中添加其他属性和函数。这也避免了其他人将$重命名为其他内容的问题。

完成此操作后,您可以将您的命名空间称为jQuery.myNamespace

答案 2 :(得分:2)

如果变量是想要与稍后要使用的元素关联的东西,可能在不同的例程中,您可以使用jQuery的“数据”方法来存储它。

e.g。

    :
    :

// Save original HTML content.

var old_html = $('#box').html();
$('#box').data({originalContent: old_html});

// Replace with new content.

$('#box').empty().html(new_html);

    :

// Restore original content (maybe in a different function).

var orig_html = $('#box').data('originalContent');
$('#box').empty().html(orig_html);

    :

我希望这对你有用。

此致         尼尔