JQuery 选择器 + 事件

1. JQuery选择器

  • id选择器 $(“#myDiv”)
  • 标签选择器 $(“div”)
  • 类选择器 $(“.myClass”)
  • 全选择器 $(“*”)
  • 并集选择器 $(“selector1,selector2,selectorN”)
  • 后代选择器 $(“div span a”)
  • 属性选择器 $(‘input[type=submit]’) 选中input 元素 属性type为submit
  • $(“form > input”) 在给定的父元素下匹配所有的子元素,不包含孙辈
  • $(“label + input”) 匹配所有紧接在 label 元素后的 input 元素
  • $(“form ~ input”) 找到所有与表单同辈的 input 元素

后三个选择器的代码使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>1:jquery选择器</title>
</head>
<body>
    <div class="container">
        <span>段落之前的span</span>
        <p id="pra"><span>段落内部的span</span></p>
        <span>段落之后紧邻的span</span>
        <span>段落之后不紧邻的span</span>
    </div>
    <!-- 
        首先引入jQuery依赖文件,必须先引依赖,再书写我们的 
        dist:distribution的简写,表示发售版,或者 市售版
    -->
    <script src="../node_modules/jquery/dist/jquery.js"></script>
    <script>
        /* 
            #jQuery元素与js中的节点,是同一种元素吗?如果不是为什么?两者如何进行转换 


            <span id="etoak">xxxx</span>

            js:
                let nodeSp = document.getElementById('etoak')
                <span id="etoak">xxxx</span>

            jQuery:
                let $sp = $('span#etoak') 
                [<span id="etoak">xxxx</span>]

                nodeSp !== $sp

            jQuery元素是对js中各种节点的一个轻度的封装,jQuery元素不能使用js中
            所有 函数 属性 方法等,同理,js元素也不能使用jQuery的各种方法等
            例如
                nodeSp.innerHTML = xxxx
                $sp.html(xxxx)

            两者如何进行转换
                jQuery  => js
                $sp[0]
                $sp.get(0)

                js  => jQuery
                $(nodeSp)
            --------------------------------------------------------------
            jQuery选择器
                $(sel):这个sel就表示css选择器

                1:  $('tagName')
                    根据标签名获取多个jquery元素
                2:  $('.class')
                    根据class获取元素
                3:  $('#id')
                    根据id获取元素
                4:  $('tagName.class')
                    $('tagName#id')
                    获取具有特定class或者id的固定的标签的元素
                5:  $('sel1,sel2,selN')
                    只要符合其中任意一个就可以成功选取
                6:  $('sel1 sel2 selN')
                    根据左祖先右后代的层级关系获取最右侧的元素
                7:  $('*')
                    获取所有元素

                8:  $('sel1 > sel2')
                    获取特定元素的子元素,注意只能获取子元素,不能获取孙辈元素

                js渲染样式
                    xxx.style.样式名 = 样式值
                jQuery渲染样式
                    css('样式名','样式值')
                    css({
                        样式名:样式值,
                        样式名:样式值,
                        样式名:样式值,
                        样式名:样式值,
                    })
                    样式名必须使用小驼峰格式
        */
        $('div.container > span').css({
            backgroundColor:'coral',
            color:'whitesmoke',
        })
        /* 
                9:  $('sel1 + sel2')
                    以下三个条件缺一不可
                    a:向下选取
                    b:必须紧邻
                    c:互为兄弟
        */
        $('p#pra + span').css('border','solid 2px navy')
        /* 
                10: $('sel1 ~ sel2')
                    以下两个条件缺一不可
                    a:向下选取
                    c:互为兄弟
        */
        $('p#pra ~ span').css('text-decoration','underline')
    </script>
</body>
</html>

2.JQuery 事件

  • mouseover + mouseout 当鼠标移入和移出时触发事件
  • mousedown + mouseup 当鼠标按钮被按下或者松开时触发事件
  • click + dbclick 当鼠标单击或者双击时触发事件
  • mousemover 当鼠标移动时触发事件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>2:jquery事件</title>
    <style>
        .tb,tr,td{
            border: solid 2px coral;
        }
        .tb{
            width: 200px;
            border-collapse: collapse;
        }
        #test{
            width:200px;
            height:200px;
            border:solid 1px crimson;
        }
        .red{
            background-color: crimson;
        }
        .blue{
            background-color: cornflowerblue;
        }
    </style>
</head>
<body>
    <button>点我试试!</button>

    <input type="button" value="添加一行">

    <table class="tb">
        <tr>
            <td>默认一行</td>
        </tr>
    </table>

    <div id="test">
        测试域
    </div>

    <ul class="myul">
        <li>列表</li>
        <li>列表</li>
        <li>列表</li>
        <li>列表</li>
        <li>列表</li>
    </ul>


    <script src="../node_modules/jquery/dist/jquery.js"></script>
    <script>
        /* 
            # jQuery四大核心函数
            所谓四大核心函数其实就是指jQuery的四种书写方式

                1:  $(sel)
                    内部书写选择器,用来从全文中获取一个或者多个jQuery元素
                    $('span#etoak')

                2:  $(html)
                    内部书写html标签,用来搭配一些方法使用
                    $('<span>xxxx</span>')

                3:  $(js节点)
                    用来进行转换,可以将js中的元素转换为jQuery元素
                    
                    $(document)
                    $(location)

                4:  $(document).ready()
                    表示全文加载无误,非常类似js中的 window.onload,但是全文可以
                    书写多个,从上往下执行, window.onload只能书写一个
                    一般来说在书写jQuery时,好的书写方式,如果涉及绑定事件,则在最外侧
                    书写ready(),其它所有的函数,都放置在ready(),表示全文无误后执行

                    $(document).ready(function(){

                        xxxxxx
                    })
                ----------------------------------------------------
        */
        $(document).ready(function(){
            /* 
                1:给元素绑定多个事件

                    sel.on('事件1 事件2 事件N',function(){
                        只要满足其中任意一个事件,则执行空参回调
                    })

                $(':contains(text)'):拿取包含特定文本的元素
                注意 jQuery的事件就是js的事件去掉on前缀
                mouseout:鼠标滑出
                mouseover:鼠标滑过
            */
            $('button:contains(点我)').on('click mouseout',function(){
                /* 
                    $(this):就表示通过选择器已经获取的元素列表
                    sel.attr('属性名',属性值)
                    将元素的某个属性名更改为属性值
                */
                $(this).attr('disabled',true)
            })

            /* 
                2:给元素绑定特定事件

                    sel.事件(function(){

                    })

                dblclick():双击
            */
            $(document).dblclick(function(){
                console.log('--------------------------')
            })

            $('input[type=button]').click(function(){
                /* 
                    A与B毫无关系,如果
                    A.append(B)
                    则A为父元素B为子元素,B追加在A的子元素之后
                    B.appendTo(A) 效果同上
                */
                $('.tb').append($('<tr><td>添加的一行</td></tr>'))
            })

            /* 
                3:      sel.hover(
                            function(){
                                鼠标滑过执行此函数
                            },
                            function(){
                                鼠标滑出执行此函数
                            },
                        )
            */
            $('div#test').hover(
                function(){
                    /* 
                        addClass():给元素添加class属性
                        removeClass():给元素删除class属性
                        toggleClass():如果元素存在class属性则删除,否则添加
                        id不能随意增删
                    */
                    $(this).removeClass().addClass('red')
                },
                function(){
                    $(this).removeClass().addClass('blue')
                }
            )

            /* 
                4:  迭代
                    sel.each(function(index,alias){
                        index:索引
                        alias:别名
                    })
            */
            $('.myul li').each(function(index){
                if(index===3){
                    $(this).css('background-color','coral')
                }
            })

        })
    </script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值