简体   繁体   English

如何使用本机JavaScript编码document.querySelector('。class')。doSomeThing()

[英]How to code document.querySelector('.class').doSomeThing() with native JavaScript

How to code document.querySelector('.class').doSomeThing() with native JavaScript like jQuery methode 如何使用本机JavaScript(例如jQuery document.querySelector('.class').doSomeThing()编码document.querySelector('.class').doSomeThing()

exp: $('.class').doSomeThing(); exp: $('.class').doSomeThing();

Element.protototype.doSomething = function( passedFunction ){        
    passedFunction.call( this );

    return this;
}

To work with querySelectorAll as well, you would need to assign the function to NodeList.prototype.doSomething too. 要同时使用querySelectorAll ,您还需要将该函数分配给NodeList.prototype.doSomething

Implement a prototype of the Element object. 实现Element对象的prototype

Element.prototype.doSomething = function(){
  // do something
}

If I understood right: 如果我理解正确:

<!DOCTYPE html>
<html lang="en">
    <head>
        <title> Bla! </title>
        <script type='text/javascript'>
          function SayB1(data) {
            alert (data);
          }
          function Init() {
              var buttons = document.getElementsByClassName('button1');
              for (var i in buttons) {
                  buttons[i].onclick = function() {
                      SayB1(this.innerHTML);
                  };
              }
          }
        </script>
    </head>
    <body onload='Init();'>
        <button class='button1'> B1 -1 </button>
        <button class='button1'> B1 -2 </button>
        <button class='button2'> B2 -1 </button>
        <button class='button2'> B2 -2 </button>
        <button class='button1'> B1 -3 </button>
    </body>
</html>

There is multiple way of doing a jQuery like plugin. 有多种方法可以做类似jQuery的jQuery。 Here one way i like : 这是我喜欢的一种方式:

(function(scope, name, undefined){
    scope[name] = function(selector){
        return new Plugin(selector);
    }

    function Plugin(selector){
        buildArrayLike(this, selector)
    }
    function buildArrayLike(obj, selector){
        var el = document.querySelectorAll(selector);
        for(var c = 0; c < el.length; c++) obj[c] = el[c];
        obj.length = el.length;
    }

    Plugin.prototype = {
        constructor : Plugin,
        method : function(){
            alert(this.length);
            return this; //For chaining;
        }
    }
})(window, '$')



console.log($('div'));

$('div').method();

Fiddle : http://jsfiddle.net/Rw5BJ/ 小提琴: http : //jsfiddle.net/Rw5BJ/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM