jquery 框架

jQuery
    
    概述
        是js的一种函数库
    特点
        写的少,做的多,可以兼容低版本的浏览器,支持链式编程或链式调用和隐式迭代
        链式编程
            $(this).siblings().slideDown()
            $(this).siblings().parent().siblings().children("ul").slideUp();
            # 头一样的代码可以拼接在同一行
            $(this).siblings().slideDown().parent().siblings().children("ul").slideUp();
            
        隐式迭代
            eg:10个button被点击时
            $("button").click(function(){ #$(选择器) 创建jQuery对象
                alert("btn")
                alert($)  返回一个匿名函数
            })
                <button></button>
                <button></button>
                <button></button>
                <button></button>
                <button></button>
                <button></button>
                <button></button>
                <button></button>
                <button></button>
             
    入口函数
        $()  ===> document.getElementById()/
        $(this)
        $("#btn")
        存放一个html标签
            $("<div>
                <p> 
                    哈哈哈
                </p>
            <div>")
        
        第一种(不常用)
        $(document).ready(function(){
            //执行的代码块
            alert(1);
        })
        第二种(全代码)
        <style>
            div{
                width: 100px;
                height: 100px;
                background: pink;
                /* display: none; */
            }
           input{
               width: 50px;
               height: 30px;
               background: green;
               border: 1px black solid;
               outline: none;
           }
        </style>
        <script src="./jQuery/jquery-1.12.4.min.js"> </script>
        <script>
        
            // 这是入口函数的开始地方
            $(function(){
                $("#btn").click(function(){
                    $("div").toggle(500);
                })
            }) #等同于$(document).ready(function(){//do something}) 表示准备document对象好了的时候执行该回调函数
        </script>
    </head>
    <body>
        <!-- <label for="">点击按钮</label> -->
        <label for="">按钮</label>
        <input type="button" id="btn">
        <div></div>
        
    </body>

    jq控制html
        $(function(){
            alert($('div').html());
            alert($('div').html(哈哈));
            alert($('div').html("<p>123</p>"));
        })
        <div>测试</div>
    jq控制css
        $(function(){
            alert($('div').css("color","red"));
            alert($('div').css("color"));
            alert($('div').css({'color':'red',"font-size":'25px'}));
        })
        <div>测试</div>
    js常用的选择器方法
        this        关键字 代指当前发生动作的那个标签(事件)
        html()      获取内容
        stop()        停止之前的事件    
        index()     索引值
        show()      显示
        hide()      隐藏
        toggle()     双向性
        addClass()   添加类
        removeClass() 删除类
        toggleClass() 双向性
        
    jq中常用的选择器
        第一种
            和CSS中的选择器一样
            $(".mydiv,#btn,p")
        第二种
            选择出来之后的元素进行筛选
                has()  选中父级执行命令  eg: <div> <p>hahha </p> <span> heheh</span></div>  执行的是div标签
                not()  除()的其他的都可以
                eq()   获取下标一般和index()绑定来使用
        第三种
            选择出来之后的元素进行转移
                prev()       上面的一个
                prevAll()    上面的所有
                next()       下面的一个
                nextAll()    下面的所有
                parent()     父级
                siblings()   兄弟级
                children()   孩子级
                find()       选中父级执行命令  eg: <div> <p>hahha </p> <span> heheh</span></div>  执行的是p标签标签
                first()
                last()
                
        动画效果        
            animate() 其中有四个参数
                第一个参数  以字典的形式存储{"width":500,"font-size":20}
                第二个参数  延时时间默认400ms
                第三个参数  曲线函数(swing(变速)/linear(匀速))
                第四个参数  是一个回调函数俗称(匿名函数)function(){"opacity":0.6}  存放当前动画结束后要发生的事件
                
            slideUp()     向上卷起
            slideDown()   向下展开
            slideToggle()  双向性
            fadeIn()       淡入效果
            fadeOut()      淡出效果
            fadeToggle()    双向性
            fadeTo(0.2)     设置透明度为0.2
            访问已有的属性
                prop()    获取属性  prop("href") 获取href的值
                prop("href","http://www.baidu.com")  修改其中的内容
            访问自定义的属性
              attr()   获取属性  attr("mycode")  获取mycode的值
              val()    获取input标签的值,相当于prop("value")
              each(function(event){})  自带一个形参event是each的默认参数
            
        和鼠标(mouse)事件有关的事件机制
            blur()    失去焦点
            focus()   获取焦点
            change()  改变其中的内容
            click()   点击事件
            mouseover()  鼠标进入(包含子元素)
            mouseout()   鼠标离开(包含子元素)
            
            mouseenter()  鼠标进入(不包含子元素)
            mouseleave()  鼠标离开(不包含子元素)
            // hover 中的两个匿名函数mouseenter和mouseleave
            hover(function(){},function(){})
            ready()
            submit()  数据提交
        和键盘有关的事件
            keyup()    弹起
            keydown()  按下
            
        表单提交 submit()
            表单提交一般不会用$("from"),因为form标签有可能在一个页面有多个,为了保证唯一性,一般推荐使用id选择器$("#myform"),也不是直接提交的,需要加条件判断
            
            $("#myform").submit(function(event){
                if(aa && bb && cc ){
                        // 条件成立需要执行的代码块
                        alert("提交成功")
                        
                }
                else{
                    // 阻止表单默认提交
                    return false 
                    // event.preventdefault()
                }
            })
            
        正则表达式(用的是原生js中的)
            创建
                var re = new RegExp(aa,bb)  // aa 匹配规则,bb 正则的参数
                var re = /匹配规则/正则的参数
                正则变量.test(数据)
                // 获取input框中的内容
                var re =  /^\w{6,20}$/    // 匹配用户名输入是否是合法的标识符
                var vals = $("#input01").val()
                // 验证正则能否成功匹配
                re.test(vals)
        
        事件冒泡
            是一种客观存在的现象,父子级标签且都绑定相同的事件,触发子级命令的时候会逐层传递到父级
            如何阻止事件冒泡的行为
                $("#btn").click(function(event){
                    // event.stopPropagation()  不推荐使用
                    return false
                })
                
        事件委托 
            一般都委托给这个标签的父标签(指的是一般不会发生改变的父标签)
            delegate()中有三个参数   
              注:第一个参数和第二个参数都以字符串的形式存在
                  第一个参数
                      事件正实发生在谁身上
                  第二个参数
                      事件属性(click,mouseover)
                  第三个参数
                      匿名函数function(){}
            优点
                提高代码的执行效率
                可以给未来元素绑定命令(指的是用程序增加的标签命令)
                                
                eg:
                    $("ul").delegate("li","click",function(){
                        alert($(this).index());
                    })
                    
                    <ul>
                        <li>文字1</li>
                        <li>文字2</li>
                        <li>文字3</li>
                        ...
                    </ul>
                    
            on() 只可以给未来元素绑定命令
                有两个参数
                    第一个参数
                        事件属性
                    第二个参数    
                        匿名函数function(){}
        
            节点操作
                js内置的DOM
                    是一种内置的结构化的表现手法,通过这个结构化表现手法把所有的标签实现了一个倒树状结构图
                    如下图                      
                DOM(document object model) 文档操作模型
                标签 = 元素 = 标记 < 节点(标签,标签的属性,标签的内容)
                常见的节点操作的方法
                    html() 比较强大
                    下面的()中写的都是要操作的元素
                        append()   子级的后面追加
                        prepend()  子级的前面追加
                        after()    同级的后面追加
                        before()   同级的前面追加
                    下面的()中写的是要往哪个地方添加(目的地)    
                        appendTo()  
                        prependTo()
                        insertAfter()
                        insertBefore()
                    remove()  删除
                    empty()   清空
                
                eg:
                    第一步:声明变量保存节点数据
                    第二步:使用追加函数将节点追加到相应的位置
                    var $li = $("<li>hhaha</li>")
                    $("ul").append($li)
                    $li.appendTo($("ul"))
                    <div>
                        // 第四个增加的位置 before()/insertBefore()
                        <ul>
                            // 第二个增加的位置 prepend()/prependTo()
                            <li></li>
                            // 第一个增加的位置 append()/appendTo()
                        </ul>
                        // 第三个增加的位置 after()/insertAfter()
                    </div>    
                    
                
            原生的JS对象
                创建的方式 
                    第一种方式
                    var pre = new Object()
                    pre.name = "zhangsan"
                    pre.age = 25
                    pre.say =  function(){
                        // 方法的定义
                        alert("hhaha")
                    }
                    alert(this.name)
                    pre.say()
                    第二种方式
                    var obj = {
                        "name":"laowang",
                        "age":25,
                        "say":function(){
                            // 定义方法
                            alert("hahha")
                        }
                    }

 

posted @ 2020-08-14 01:13  inhocho  阅读(9)  评论(0)    收藏  举报