• 用 JS 原生方法实现 jQuery 的 append, prepend等常用方法


    相当于$(el).before('html')

    el.insertAdjacentHTML('beforeBegin', 'html');
    el.insertAdjacentHTML('beforebegin',element);
    

    相当于$(el).prepend('html')

    el.insertAdjacentHTML('afterBegin', 'html');
    el.insertBefore(element,el.firstChild);
    

    相当于$(el).append('html')

    el.insertAdjacentHTML('beforeEnd', 'html');
    el.appendChild(element)
    

    相当于$(el).after('html')

    el.insertAdjacentHTML('afterEnd', 'html');
    el.insertAdjacentElement('afterend',element)
    

    1、addClass:为指定的dom元素添加样式。

    $(el).addClass(className)//JQ
    el.classList.add(className)
     
    function addClass(obj, cls) {
        if (!this.hasClass(obj, cls)) {
            obj.className += " " + cls;
        }
    }
     
    
    

    2、removeClass:删除指定dom元素的样式。

    $(el).removeClass(className)//JQ
    el.classList.remove(className)
    function removeClass(obj, cls) {
        if (hasClass(obj, cls)) {
            var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');
            obj.className = obj.className.replace(reg, ' ');
        }
    }
     
    
    

    3、toggleClass:如果存在(不存在),就删除(添加)一个样式。

    $(el).toggleClass(className)//JQ
    el.classList.toggle(className)
    function toggleClass(obj,cls){
        if(hasClass(obj,cls)){
            removeClass(obj, cls);
        } else {
            addClass(obj, cls);
        }
    }
    

    4、hasClass:判断样式是否存在。

    function hasClass(obj, cls) {
        return obj.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
    }
    

    $(el).offset()

    let rect=el.getBoundingClientRect()
    {
     top:rect.top+document.body.scrollTop,
     left:rect.left+document.body.scrollLeft
    }
    

    $(el).on(eventName,eventHandler)

    el.addEventListener(eventName,eventHandler)
    

    $(el).off(eventName,eventHandler)

    el.removeEventListener(eventName, eventHandler)
    

    $(el).remove()

    el.parentNode.removeChild(el)
    

    $(document).on(eventName, elementSelector, handler)

    document.addEventListener(eventName, function(e) {
        const handler = function(e) {
            console.log(this)
            console.log(e)
        }
        for (var target = e.target; target && target != this; target = target.parentNode) {
            if (target.matches(elementSelector)) {
                handler.call(target, e);
                break;
            }
        }
    }, false);
    

    1. 直接设置style的属性 注:某些情况用这个设置 !important值无效

    如果属性有'-'号,就写成驼峰的形式(如textAlign) 如果想保留 - 号,就中括号的形式 element.style['text-align'] = '100px';

    element.style.height = '100px';
    

    2. 直接设置属性(只能用于某些属性,相关样式会自动识别)

    element.setAttribute('height', 100);
    element.setAttribute('height', '100px');
    

    3. 设置style的属性

    element.setAttribute('style', 'height: 100px !important');
    

    4. 使用setProperty 如果要设置!important,推荐用这种方法设置第三个参数

    element.style.setProperty('height', '300px', 'important');
    

    5. 改变class 比如JQ的更改class相关方法

    因JS获取不到css的伪元素,所以可以通过改变伪元素父级的class来动态更改伪元素的样式

    element.className = 'blue';
    element.className += 'blue fb';
    

    6. 设置cssText

    element.style.cssText = 'height: 100px !important';
    element.style.cssText += 'height: 100px !important';
    

    7. 创建引入新的css样式文件

            function addNewStyle(newStyle) {
                var styleElement = document.getElementById('styles_js');
    
                if (!styleElement) {
                    styleElement = document.createElement('style');
                    styleElement.type = 'text/css';
                    styleElement.id = 'styles_js';
                    document.getElementsByTagName('head')[0].appendChild(styleElement);
                }
                
                styleElement.appendChild(document.createTextNode(newStyle));
            }
    
            addNewStyle('.box {height: 100px !important;}');
    

    8. 使用addRule、insertRule

            // 在原有样式操作
            document.styleSheets[0].addRule('.box', 'height: 100px');
            document.styleSheets[0].insertRule('.box {height: 100px}', 0);
    
            // 或者插入新样式时操作
            var styleEl = document.createElement('style'),
                styleSheet = styleEl.sheet;
    
            styleSheet.addRule('.box', 'height: 100px');
            styleSheet.insertRule('.box {height: 100px}', 0);
    
            document.head.appendChild(styleEl);   
    
  • 相关阅读:
    lvs+keeplived笔录
    python之购物车的编写(熬夜撸代码中。。。)
    关于三级菜单程序的编写
    .split()函数使用方法
    range()函数的使用
    关于python如何简单跳出多层循环
    Kubernetes部署通用手册 (支持版本1.19,1.18,1.17,1.16)
    八个开源的 Spring Boot 前后端分离项目,一定要收藏!
    招聘简章-2020年10月25日19:31:39
    小公司老板的日常管理
  • 原文地址:https://www.cnblogs.com/7c89/p/15715624.html
Copyright © 2020-2023  润新知