zoukankan      html  css  js  c++  java
  • my pretty simple jSearch imitating jQuery

    the code is as follows:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script>
            /* File Created: March 13, 2013 */
            var jSearch = function (selector, context) {
                if (window == this) {
                    return new jSearch(selector, context);
                }
    
                selector = selector || document;
    
                if (typeof selector == "string") {
                    return new jSearch(context).find(selector);
                }
    
                return this.setArray((selector.constructor == Array && selector) ||
                                [selector]);
            }
    
            jSearch.fn = jSearch.prototype = {
                version: 1.0,
                length: 0,
    
                pushStack: function (a) {
                    var ret = new jSearch(a);
                    return ret;
                },
                setArray: function (a) {
                    this.length = 0;
                    [ ].push.apply(this, a);
                    return this;
                },
                find: function (t) {
                    return this.pushStack(jSearch.find(t));
                },
                val: function () {
                    console.log("this is val method just for demonstration");
                },
                text: function () {
                    console.log("this is text method just for demonstration");
                }
            }
    
            jSearch.extend = jSearch.fn.extend = function () {
                var target = arguments[0], a = 1;
    
                if (arguments.length == 1) {
                    target = this;
                    a = 0;
                }
                var prop;
                while (prop = arguments[a++]) {
                    for (var i in prop) target[i] = prop[i];
                }
                return target;
            }
            jSearch.extend({
                //This is a genuine method to retrieve html object.
                //If t starts with #,just call native getElementById method,etc.
                find: function (t, context) {
                    if (t.indexOf("#") == 0) {
                        var id = t.substring(1, t.length);
                        return document.getElementById(id);
                    } if (t.indexOf(".") == 0) {
                        return getElementsByClassName(t.substring(1, t.length));
                    } else {
                        alert("don't support the selector");
                    }
    
                },
                filter: function () {
                    console.log("this is text filter just for demonstration");
                },
                each: function (obj, fn) {
                    for (var i = 0, ol = obj.length; i < ol; i++) {
                        fn.apply(obj[i])
                    }
                }
            });
    
            jSearch.event = {
                add: function (element, type, handler) {
                    element["on" + type] = handler;
                }
            }
    
            jSearch.fn.extend({
                each: function (fn) {
                    jSearch.each(this, fn);
                },
                bind: function (type, fn) {
                    return this.each(function () {
                        jSearch.event.add(this, type, fn);
                    });
                }
            })
    
    
    
            function getElementsByClassName(className) {
                var all = document.all ? document.all : document.getElementsByTagName('*');
                var elements = new Array();
                for (var e = 0; e < all.length; e++) {
                    if (all[e].className == className) {
                        elements[elements.length] = all[e];
                    }
                }
                return elements
            }
        </script>
        <script type="text/javascript">
            window.onload = function(){
                var elem = jSearch(".cjy"); 
                elem.bind("click",test1111); 
            };
    
            function test1111(){
                alert(1111);
            }
        </script>
    </head>
    <body>
        <button id="btnSave" class="cjy" role="approve" >btnSave</button>
        <button id="Button1" class="cjy" role="approve" >Button1</button>
        <button id="Button2" role="approve" >Button2</button>
    </body>
    </html>
  • 相关阅读:
    Git 常用命令
    Python 常用算法记录
    Python基础Web服务器案例
    你真的懂SDWebImage?
    Core Data的那点事儿~
    看看 SDWebImage内部基本实现过程
    App上架流程 & 上架被拒10大原因
    KVO中你所不知道的"坑"
    math公式手写识别网址
    umi build出现的Path must be a string的问题解决
  • 原文地址:https://www.cnblogs.com/cnbwang/p/2958533.html
Copyright © 2011-2022 走看看