13

我怎样才能为函数“document.getElementById”起别名,我已经看到它使用 $ 完成了

谢谢

4

7 回答 7

18
var $ = document.getElemenyById.bind( document );
于 2013-09-24T23:35:59.223 回答
10

可能是最简单/最短的方法:

function $(id) { return document.getElementById(id); };
于 2010-06-21T03:05:31.447 回答
3

这是我在自己的图书馆中使用的东西。DOM是类并且$是一个函数,它是函数的快捷实现getElementById

function DOM()
{
  this.$ = function(elementIDs)
  {
    var el;

    // If an array of element names is passed.
    if (arguments.length > 1) 
    {
      var elements = [];
      var length = arguments.length;
      for (var i = 0; i < length; i++)
      {
        // Call this function recursively for each passed parameter.
        elements.push(this.$(arguments[i]));
      }
      return elements;
    }

    // If a single element name is passed.
    if (typeof(elementIDs) == "string")
    {
      el = document.getElementById(elementIDs);
    }
    return el;
  }
}

用法:

var el = new DOM().$("elementID");

您可以将其别名为顶级窗口元素。

于 2009-06-05T06:08:55.657 回答
3

ES6 中引入的新特性让我们改进了 Chris Lloyd 的回答,简化了:

function $(id) { return document.getElementById(id); };

到:

const $ = id=> document.getElementById(id);
于 2016-12-09T00:12:35.217 回答
1

facebook 的 connect-jssrc/core/prelude.js中执行以下操作:

if (!window.FB) {
  FB = {
    // ...
    $: function(id) {
      return document.getElementById(id);
    }
    // ...
  }
}

然后,要使用它,他们会:

FB.$('name-of-id');

初始块创建全局对象 FB。他们使用这个对象 FB 作为命名空间,并在其中定义所有对象、属性和函数。这样,只要其他代码不使用全局对象 FB,它就可以与其他 JavaScript 代码一起使用。

于 2010-07-05T19:23:27.310 回答
0
function $( s ) {
    return document.getElementById( s ) ? document.getElementById( s ) : "";
}

$( "myId" );

这假设您只想使用美元函数(选择器)来获取 ID。我没有对此进行测试,但它应该可以工作。

上次看 jQuery 的核心时,它接受一个字符串作为参数,然后使用正则表达式来确定它是什么类型的选择器。

于 2009-06-06T01:33:01.657 回答
-1

当您看到 $() 函数时,它可能是一些库,例如 jQuery 或 Prototype。$ 函数不是 document.getElementById 的别名,而是一个扩展函数功能的包装器。

要创建自己的包装器,您可以编写一个函数“别名”:

var alias = document.getElemenyById;

或者

function alias(id) { return document.getElementById(id); }

但实际上,我会使用可用的库之一,例如 jQuery 或 Prototype。

于 2009-06-05T05:54:31.187 回答