我如何在vanilla js中编写这个JQuery addClass方法 [英] How would I write this JQuery addClass method in vanilla js

查看:82
本文介绍了我如何在vanilla js中编写这个JQuery addClass方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

那我怎么写呢

$('div').addClass('border1');

,就像我的add class方法一样。到目前为止我所拥有的是,

in Vanilla javascript, like what would my add class method look like. So far what I have is,

function addClass(x,y) {
    x.className += " " + y;
}

但我知道这是错误的,因为参数已关闭。我真的输了。

but i know this is wrong, as the parameters are off. Im really lost.

推荐答案

让我们仔细看看jQuery在这里做了什么。

Let's take a closer look at what jQuery does here.

$('div')是什么意思?

在jQuery术语中,它意味着选择文档中的所有'div'元素

$('div')是一个jQuery对象,它表示文档中的所有 div 元素。但是在这段代码中你没有自己专门针对单个DOM元素。

In jQuery terms it means "select all 'div' elements in the document".
$('div') is a jQuery object which represents all div elements in the document. But nowhere in this code you specifically target a single DOM element by yourself.

让我们编写自己的简化选择对象MySelect:

Let's write our own simplified selection object "MySelect":

/**
 * `MySelect` object constructor.
 */
function MySelect(selector){
    this.elementList = document.querySelectorAll(selector);
}

现在让我们使用它:

var divs = new MySelect('div');
divs.elementList; // all `div` elements in the document.

(请注意 querySelectorAll 是一种原生的javascript DOM方法)

(Note that querySelectorAll is a native javascript DOM method)

现在我们有了一个元素选择对象,让我们为它添加一个 addClass 方法:

Now that we have an elements selection object, let's add an addClass method to it:

/**
 * Add the specified class to all elements selected by this object.
 */
MySelect.prototype.addClass = function(cls){
    var i, e;
    for (i = 0; i < this.elementList.length ; i++){
        e = this.elementList[i];
        e.className += " " + cls;
        // can also use e.classList.add
    }
}

瞧:

divs.addClass('xyz');

这是一个非常简单的方式,就是jQuery的工作方式。

This, in a very simplified fashion, is how jQuery works.

您可以使用 $ 语法:

function $(selector){
    return new MySelect(selector);
}

并照常使用:

$('div').addClass('xyz');

这篇关于我如何在vanilla js中编写这个JQuery addClass方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆