zoukankan      html  css  js  c++  java
  • 前端新知识总结

    JQuery的链式调用

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
            <script src="../js/jquery-2.0.0.js" type="text/javascript" charset="utf-8"></script>
        </head>
        <input type="button"/>
        <input type="button"/>
        <body>
            <script type="text/javascript">
                $('input[type="button"]') //获取所有type类型为input的元素
                .eq(0)  //找到第一个按钮
                .click(function (){  //绑定click点击事件
                    console.log("点击了第一个button")
                })
                .end()  //返回所有按钮
                .eq(1)  //找到第二个按钮
                .click(function (){  //绑定click点击事件
                    console.log("点击了第二个button")
                })
            </script>
        </body>
    </html>

    这样做解决了JS代码、返回的都是同一个对象,提高代码效率。

    但是jquery封装组件的时候如果不注意,很容易就会破坏这种链式调用,其实只要在封装组件的最后将当前实例的this进行return就可以了,切记切记。

    JS命名污染

    HTML

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
            <script src="../js/test.js" type="text/javascript" charset="utf-8"></script>
        </head>
        <body>
            <script type="text/javascript">
                function toDo(){
                    console.log("js-->toDo222222")
                }
                toDo();
            </script>
        </body>
    </html>

    JS

    function toDo(){
        console.log("js-->toDo111111")
    }

    如上代码,在JS文件中写了一个toDo的方法,然后再HTML中也写了一个这样的方法,调用后输出的是HTML中的toDo方法,这就是命名污染。如何解决?用闭包

    JS闭包

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
            <script src="../js/test.js" type="text/javascript" charset="utf-8"></script>
        </head>
        <body>
            <script type="text/javascript">
                function toDo(){
                    console.log("js-->toDo222222")
                }
                toDo();
                new init().toDo();
            </script>
        </body>
    </html>

    JS代码

    function init() {
        return {
            toDo: function toDo() {
                console.log("js-->toDo111111")
            }
        }
    }

     哎,这样是不是就解决了,其实方法还有很多啊。

    参考链接:http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html 

    以及:https://www.cnblogs.com/xiaohuochai/p/5728577.html 

    还有经典案例:https://blog.csdn.net/dovlie/article/details/76339244

    CSS

    box-sizing
      content-box :宽度和高度分别应用到元素的内容框。在宽度和高度之外绘制元素的内边距和边框
      border-box : 为元素设定的宽度和高度决定了元素的边框盒。就是说,为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制。通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。

     

    positions
      absolute : 决定定位,相对于static以外的第一个父元素
      fixed :决定定位,相对于window窗口
      relative : 生成相对定位的元素,相对于其正常位置进行定位,个人理解(为绝对定位提供父元素,添加了这个属性就作为子节点的用来决定定位的,简而言之提供了参照物)
      static : 默认值,没有定位
      inherit : 继承父类position的值

     

  • 相关阅读:
    MySQL索引管理及执行计划
    MySQL客户端工具及SQL讲解
    mysql数据类型
    mysq日志管理
    mysql连接管理及实例初始化配置
    mysql用户权限管理
    msyql5.6与mysql5.7安装区别
    mysql简介
    ASP.NET使用ImageMap控件
    ASP.NET Calendar(日历控件)
  • 原文地址:https://www.cnblogs.com/qcq0703/p/14462148.html
Copyright © 2011-2022 走看看