javaScript User Defined $ function like jquery

时间:2011-12-09 12:26:13

标签: javascript jquery

我正在尝试创建用户定义$ function,因为我无法在现有项目中使用Jquery。

我想让这个函数像Jquery $('ID')

一样工作

请给我一些提示任何提示或示例 例如

function $(element) {

}

var value = $('elementID').value

更新 因为我有prototype.js

function $(element) {
  if (arguments.length > 1) {
    for (var i = 0, elements = [], length = arguments.length; i < length; i++)
      elements.push($(arguments[i]));
    return elements;
  }
  if (Object.isString(element))
    element = document.getElementById(element);
  return Element.extend(element);
}

5 个答案:

答案 0 :(得分:5)

您可以从:

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

然而,您最终会发现这还不够好。事实证明,Internet Explorer(旧版本)也会通过名称返回值。换句话说,如果页面上有一个元素,其“name”属性与您正在寻找的“id”匹配,那么您(可能)会得到它。

因此,你必须做更多的工作。我建议检查jQuery或Prototype的源代码,以找到聪明人处理该问题的最先进方法。 编辑在jQuery中哇这很复杂。

答案 1 :(得分:2)

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

此处的演示演示:http://jsfiddle.net/UkMAE/

答案 2 :(得分:2)

  1. 建议 - 检查jQuery源代码 - 非常易读,并会给你一个提示如何实现它。
  2. 2.对于现代浏览器,您可以在场景后面使用它来实现:

    var x =document.querySelector(selector)
    

    和querySelectorAll(selector)

    编辑:是 - 如果你只需要查找id,getElementById就可以工作,如果你需要更复杂的css选择器 - 你可以使用它。 jQuery在支持时默认为querySelector

答案 3 :(得分:1)

如果您只想要jQuery这样的选择器,请使用Sizzle库:http://sizzlejs.com/

然后在代码中执行以下操作:

var $ = Sizzle;

现在你可以使用:

$("selector");

答案 4 :(得分:1)

我的JS:

var $ = function(element) {
    element = document.getElementById(element);
    return {
        "0": element,
        "val": function(text) {
            if ( text ) {
                console.log(this);
                this[0].value = text;
                return this;
            } else {
                return this[0].value;
            }
        }
    };
}

onload = function() {
    var myElement = $("someID");
    alert(myElement.val("some value").val());
}

我的DOM:

<input id="someID">