JavaScript美元函数,函数$()错误

时间:2011-01-26 19:22:57

标签: javascript function

我在互联网上遇到了美元符号功能,并决定将其用于javascript切换菜单。但是,“$”符号使我的代码失败。

这就是我想要使用的:

function $() {
        var elements = new Array();
        for (var i = 0; i < arguments.length; i++) {
            var element = arguments[i];
            if (typeof element == 'string')
                element = document.getElementById(element);
            if (arguments.length == 1)
                return element;
            elements.push(element);
        }
        return elements;
    }

    function toggle(obj) {
        var el = $(obj);
        el.style.display = (el.style.display != 'none' ? 'none' : '' );
    }

来自“function $(){”的$似乎打破了代码。你怎么声明这个功能? 如果我用“任何东西”替换$,它可以工作,但不是美元函数......

2 个答案:

答案 0 :(得分:7)

美元符号不是标准的Javascript函数,而是第三方库的一部分。

有两个着名的图书馆以这种方式使用美元符号。

较旧的版本名为Prototype,但目前正在流行的版本,最有可能是您使用过的版本JQuery

这两个库都可以通过向HTML页面添加<script>标记来使用,以包含库代码,之后您就可以使用它们的功能。

这两个库的大部分功能都包含在各自的$()函数中。对于JQuery,如果您想同时使用这两个函数,还可以将$()函数称为jQuery()以防止命名空间冲突。

我建议在继续之前jQuery的阅读了 - jQuery是非常强大的,并增加了很多功能,但写的jQuery代码的编码风格可以从规则的Javascript完全不同的,可以采取一些习惯的。这与学习API并找出它能做什么完全不同。

要实际回答你的问题 - 这是如何将$声明为函数名,我建议看一下JQuery源代码,看看他们是如何做到的。但是,我第一次尝试生成了$()函数,就像这样:

var $ = function() {alert('dollar works for me');}
$();

但说实话,我不会这样做。如果您确实希望以其在其他站点中使用的方式使用$()函数,则需要使用JQuery。它不仅仅包装document.getElementById()

顺便说一下,JQuery和Prototype并不是那里唯一的类似库。如果您对此类事情感兴趣,您可能还需要查看MooToolsYUI和其他一些内容。

希望有所帮助。

答案 1 :(得分:3)

$ sign是各种javascript框架(prototype / jQuery)的表示法。由于用“其他任何东西”替换它,你很可能在内联函数和你正在使用的框架之间发生冲突。

本身的符号和功能是正确的,如下例所示。

打开一个新标签/窗口并在地址栏中输入:

javascript:eval("function $() { alert('hi'); } $();");