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

Spe*_*ump 0 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' : '' );
    }
Run Code Online (Sandbox Code Playgroud)

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

Spu*_*ley 7

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

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

较旧的一个称为Prototype,但目前流行的,最有可能是你在使用中看到的那个是JQuery.

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

这两个库的大多数功能都包含在它们各自的$()功能中.对于JQuery,您还可以引用该$()函数jQuery()以防止命名空间冲突,如果您想要同时使用它们.

我建议在继续之前阅读JQuery - JQuery非常强大,并且添加了许多功能,但编写JQuery代码的编码风格可能与常规Javascript完全不同,并且可能需要一些时间来习惯.这与学习API并找出它能做什么完全不同.

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

var $ = function() {alert('dollar works for me');}
$();
Run Code Online (Sandbox Code Playgroud)

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

顺便说一下,JQuery和Prototype并不是那里唯一的类似库.如果你对这类事情感兴趣,你可能还想看看MooTools,YUI和其他一些东西.

希望有所帮助.