zoukankan      html  css  js  c++  java
  • jQuery

    jquery方法找到的对象叫做jquery对象,原生js方法找到的标签对象叫做DOM对象,有各自的方法

    jquery对象和DOM对象互相转换

    jquery对象---DOM对象: jquery对象[0].style.backgroundColor = 'red'

    dom对象 --- jquery对象: $(DOM对象).css('background-color','red')

    jQuery引入

    将jqyery写入本地文件,在script标签内引入jquery文件路径

    <script src = 'jquery文件路径'></script>

    <script>

      'jquery代码'

    </script>

    查找标签

    基本选择器

    id选择器     $('#id')
    标签选择器   $('标签名')
    class选择器  $('.类名')
    组合选择器   $('#id,.d1')

    层级选择器

    后代选择器   $('x y')  x的所有后代y
    子代选择器   $('x > y')  x的所有子代y
    毗邻选择器   $('x + y')  找到紧挨在x后面的标签y
    兄弟选择器   $('x ~ y')  x之后所有的同级y

    基本筛选器

    $('选择器:first')      获取匹配的第一个元素
    $('选择器:last')       获取匹配的最后一个元素
    $('选择器:eq(索引)')    索引等于index的那个元素
    $('选择器:even')       匹配所有索引值为偶数的元素,从 0 开始计数
    $('选择器:odd')        匹配所有索引值为奇数的元素,从 0 开始计数
    $('选择器:gt(索引)')    匹配所有大于给定索引值的元素
    $('选择器:lt(索引)')    匹配所有小于给定索引值的元素
    $('选择器:not(选择器)')    移除所有满足not条件的标签
    $('选择器:has(选择器)')    选取所有包含一个或多个标签在其内的标签(指的是从后代元素找)

    属性选择器

    # 多用于input标签
    [属性]        $('input[type]')
    [属性=值]     $('input[type=text]')     查找type=text类型的input标签
    [属性!=值]    $('input[type!=text]')    查找type不等于text类型的input标签

    表单筛选器

    # 多用于input标签,通过属性选择器也可以查找到
    :text
    :password
    :file
    :radio
    :checkbox
    :submit
    :reset
    :button
    
    $(":checkbox")    找到所有的checkbox类型的input标签

    表单对象属性选择器

    在input标签内设置   
        <input type="text" disabled>  表示这个输入框不可用
        <input type="text" checked>   表示这个选择框默认被选中
        <input type="text" selected>  表示这个下拉选项默认被选中
        
        :enabled
        :disabled   
        :checked     
        :selected
        
        注意: 在使用checked属性查找时,会把input标签中有checked属性的标签和select下拉选项中被选中的标签都筛选出来, 一般在checked属性前加input,表示筛选input标签中有checked属性的标签
        <input type="checkbox" checked>抽烟
        <input type="checkbox" checked>喝酒
        <input type="checkbox">烫头
        <select name="" id="s1">
            <option value="">朝阳</option>
            <option value="" selected>海淀</option>
            <option value="">昌平</option>
            <option value="">东城</option>
        </select>
        
        $(':checked')         会查找出3条结果,包括option=海淀的标签
        $('input:checked')    结果是两条
        $(':selected')        查找被选中的option

    筛选器方法

    下一个元素

    $("选择器").next()
    $("选择器").nextAll()         
    $("选择器").nextUntil("#i2")    直到找到id为i2的标签就结束查找,但是不包含它

    上一个元素

    $("选择器").prev()
    $("选择器").prevAll()
    $("选择器").prevUntil("#i2")    直到找到id为i2的标签就结束查找,但是不包含它

    父亲元素

    $("选择器").parent()
    $("选择器").parents()    查找当前元素的所有的父辈元素(所有祖先辈,直到html)
    $("选择器").parentsUntil('body')    查找当前元素的所有的父辈元素,直到遇到匹配的那个元素为止,这里直到body标签,不包含body标签

    儿子和兄弟元素

    $("选择器").children();         子辈们
    $("选择器").siblings("#id");    同级兄弟们,不包含自己,还可以添加元素进行进一步筛选

    查找

    find  查找后代
    $("div").find("p")      等价于$("div p")     查找div标签中的字标签p

    筛选

    $("div").filter(".c1")  等价于 $("div.c1")   从所有的div标签中过滤出有class='c1'属性的div
        
    和前面写在选择器内:first的作用一致,也可以写在对象后面,使用.的形式
    .first()    获取匹配的第一个元素
    .last()     获取匹配的最后一个元素
    .not()      从匹配元素的集合中删除与指定表达式匹配的元素
    .has()      保留包含特定后代的元素,去掉那些不含有指定后代的元素。
    .eq()       索引值等于指定值的元素

    操作标签

    样式操作

    addClass()      添加指定的CSS类名
    removeClass()   移除指定的CSS类名
    hasClass()      判断样式存不存在
    toggleClass()   切换CSS类名,如果有就移除,如果没有就添加
        
    还可以直接操作CSS属性修改样式: 
    $("p").css("color", "red")   将p标签的字体颜色设置成红色
    $(".c1").css({"geight":200px,"width":200px})  如果要修改多个属性,需要用对象的形式设置键值对

    位置操作

    .offset()          相对于页面左上角的距离,也可以通过设置移动位置          
        .offset({top:200,left:200})
    .position()        相对于父级标签(设置了position:relative或absolute)的距离,如果没有,则根据浏览器左上角,不能设置位置
    $(window).scrollTop()    滚轮向下移动的距离
    $(window).scrollLeft()   滚轮向左移动的距离

    尺寸

    .height()       内容content的高度
    .width()        内容content的宽度
    .innerHeight()  内容content高度 + 两个padding的高度
    .innerWidth()   内容content高度 + 两个padding的宽度
    .outerHeight()  内容高度 + 两个padding的高度 + 两个border的高度
    .outerWidth()   内容高度 + 两个padding的高度 + 两个border的宽度

    文本

    .text()         获取匹配元素的文本内容,不包括标签
    .text('内容')   可以设置新的内容,替换之前的文本内容
    .html()         获取第一个匹配元素的html内容,包括标签
    .html('内容')   设置新的内容替换之前的内容,可以识别标签

    值操作

    // 查看选中的值
    radio       $(':radio:checked').val()
    checkbox    $(':checkbox:checked').val()
    select单选下拉框   $('select').val()
    select多选下拉框   $('select').val()
    
    // 设置值
    radio                $(':radio').val([值])
    checkbox             $(':checkbox').val([值1,值2])
    select单选下拉框     $('select').val(值)
    select多选下拉框     $('select').val([值1,值2])

        注意: 在使用checked或者selected查找值时,如果找到两个对象,但是取值的时候只返回第一个的值,所以需要循环取值

    for(var i in $('input:checked')) {
        console.log($('input:checked').eq(i).val())}

    属性操作

    attr(属性名)        通过属性名查找值
    attr(属性名,值)     设置属性
    attr({属性名:值,属性名:值})   设置多个属性值
    removeAttr()        删除属性
        
    prop()              判断标签的状态   checked selected disabled   返回布尔值
    标签对象.prop('checked',true)   将标签对象设置为选中状态

    文档处理

    $(A).append(B)   把B追加到A的内部的后面
    $(A).appendTo(B) 把A追加到B的内部的后面
        
    $(A).prepend(B)   把B追加到A的内部的前面
    $(A).prependTo(B) 把A追加到B的内部的前面
        
    $(A).after(B)     把B添加到A的外部的后面(同级)
    $(A).insertAfter(B)    把A追加到B的外部的后面(同级)
        
    $(A).before(B)     把B添加到A的外部的前面(同级)
    $(A).insertBefore(B)    把A追加到B的外部的前面(同级)
        
    remove()      将标签对象及对象里面的元素全部删除
    empty()       将标签对象里面的内容清空,但是调用这个方法的标签对象还在
        
    $(A).replaceWith(B)   将A替换成B
    $(A).replaceAll(B)    将B替换成A

    克隆

    clone()      复制标签的所有内容,但是不复制绑定的事件
    clone(true)  复制标签的所有内容,包括事件
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <button id="d1"></button>
    <script src="jquery.js"></script>
    <script>
        $('#d1').click(function () {
            $(this).clone(true).insertAfter($(this));
        })
    </script>
    </body>
    </html>
    示例

    事件

    click   点击
    hover   鼠标移动上去    不能用on绑定,可以用mouseenter和mouseleave实现效果
    blur    光标移开
    focus   光标
    change  内容发生变化
    keyup   键盘抬起
    keydown 键盘按下
    mouseover    如果该标签有子标签,那么移动到该标签或者移动到子标签时会连续触发
    mouseenter   不管有没有子标签都只触发一次
    mouseleave   鼠标移开
    // keydown  在jquery中查看键盘按键对应的值
    
    <script>
        $(window).keydown(function (event) {
           console.log(event.keyCode)
        })
    </script>    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <table border="1">
        <thead>
            <tr>
                <th></th>
                <th>姓名</th>
                <th>操作</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td><input type="checkbox"></td>
                <td>aa</td>
                <td>
                    <select>
                        <option value="1">上线</option>
                        <option value="2">下线</option>
                        <option value="3">停职</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td><input type="checkbox"></td>
                <td>bb</td>
                <td>
                    <select>
                        <option value="1">上线</option>
                        <option value="2">下线</option>
                        <option value="3">停职</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td><input type="checkbox"></td>
                <td>cc</td>
                <td>
                    <select>
                        <option value="1">上线</option>
                        <option value="2">下线</option>
                        <option value="3">停职</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td><input type="checkbox"></td>
                <td>dd</td>
                <td>
                    <select>
                        <option value="1">上线</option>
                        <option value="2">下线</option>
                        <option value="3">停职</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td><input type="checkbox"></td>
                <td>ee</td>
                <td>
                    <select>
                        <option value="1">上线</option>
                        <option value="2">下线</option>
                        <option value="3">停职</option>
                    </select>
                </td>
            </tr>
        </tbody>
    </table>
    
    <script src="jquery.js"></script>
    <script>
        var flag = false;
        $(window).keydown(function (event) {
            if (event.keyCode === 16) {
                flag = true
            }
        });
        $(window).keyup(function (event) {
            if (event.keyCode === 16) {
                flag = false
            }
        });
    
        $('select').change(function () {
            var bechecked = $(this).parent().siblings().first().find(':checkbox').prop('checked');
            if (flag && bechecked) {
                var value = $(this).val();
                var beselected = $('input:checked').parent().parent().find('select');
                beselected.val(value)
            }
        })
    </script>
    </body>
    </html>
    批量操作

    绑定

    对象.事件(function(){})
    对象.on('事件',function(){})

    移除事件

    off()
    $('li').off('click')   将li标签移除点击事件

    事件冒泡

      执行子标签绑定的事件,也会触发父级标签的事件

    阻止事件冒泡

       在函数内最后 return false   或者 event.stopPropagation()

    事件委托

    $("tbody").on("click", ".fire", function (){     // tbody为fire的父级标签,将事件委托给父级标签
        $(this).parent().parent().remove()          // this触发的还是子标签
    });

    动画效果

    show(毫秒数)
    hide()
    slideDown()   滑上滑下
    slideUp()
    slideToggle()
    fadeIn()      淡入淡出
    fadeOut()
    fadeToggle()

    each循环

    li =[10,20,30,40]
    $.each(li,function(i, v){      //  i是索引   v是数组中的每个元素
        console.log(i, v);
    })
    循环数组
    $('选择器').each(function(i,v){
        console.log(i,v)
    })
    循环标签

    终止循环

    return false

    data

    .data('键','值')   设置值,封装数据
    .data('键')        取值,没有的话返回undefined
    removeData('键')   通过键移除值

     插件

    $.extend({                           
        min:function(a, b){return a < b ? a : b;},   //自定义了一个min和max方法,min和max作为键,值是一个function
        max:function(a, b){return a > b ? a : b;},
    });
    
    $.min()     // 调用
    $.max()
     
    $.fn.extend({            // fn 标签对象 表示通过标签可以调用
    min:function(a, b){return a < b ? a : b;}
    });  
    
    $('div').min()    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            body {
                margin: 0;
                padding: 0;
            }
            .cover {
                position: fixed;
                width: 100%;
                height: 100%;
                background-color: rgba(0,0,0,0.3);
                z-index: 99;
            }
            .user_msg {
                position: fixed;
                width: 600px;
                height: 400px;
                background-color: white;
                top: 50%;
                left: 50%;
                margin-left: -300px;
                margin-top: -200px;
                z-index: 1000;
            }
            .hide {
                display: none;
            }
        </style>
    </head>
    <body>
    <div>
        <button id="all">全选</button>
        <button id="reverse">反选</button>
        <button id="cancel">取消</button>
    </div>
    <div>
        <button id="add_msg">添加记录</button>
    </div>
    <div class="cover hide"></div>
    <div class="user_msg hide">
        姓名:<input type="text" id="user">
        爱好:<input type="text" id="hobby">
        <button id="commit">提交</button>
        <button id="qx">取消</button>
    </div>
    <table border="1">
        <thead>
            <tr>
                <th></th>
                <th>姓名</th>
                <th>爱好</th>
                <th>操作</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td><input type="checkbox"></td>
                <td>张三</td>
                <td>抽烟</td>
                <td><button class="fire">删除</button></td>
                <td><button class="edit">编辑</button></td>
            </tr>
            <tr>
                <td><input type="checkbox"></td>
                <td>李四</td>
                <td>喝酒</td>
                <td><button class="fire">删除</button></td>
                <td><button class="edit">编辑</button></td>
            </tr>
            <tr>
                <td><input type="checkbox"></td>
                <td>王五</td>
                <td>烫头</td>
                <td><button class="fire">删除</button></td>
                <td><button class="edit">编辑</button></td>
            </tr>
        </tbody>
    </table>
    
    <script src="jquery.js"></script>
    <script>
        //全选
        $('#all').click(function () {
            $(':checkbox').prop('checked',true);
        });
        //取消
        $('#cancel').click(function () {
            $(':checkbox').prop('checked',false)
        });
        //反选
        $('#reverse').click(function () {
            var checked = $('input:checked');
            var unchecked = $('input:not(:checked)');
            checked.prop('checked',false);
            unchecked.prop('checked',true);
        });
        //模态对话框
        $('#add_msg').click(function () {
            $('#user,#hobby').val('');
            $('.cover,.user_msg').removeClass('hide');
        });
        //提交 增加新纪录
        $('#commit').click(function () {
            $('.cover,.user_msg').addClass('hide');
            var name = $('#user').val();
            var hobby = $('#hobby').val();
            var $editTr = $(this).data('xyh');
            if ($editTr === undefined) {
                var new_tr = document.createElement('tr');
                if (name.length !==0 && hobby.length !==0) {
                    $(new_tr).append('<td><input type="checkbox"></td>');
                    $(new_tr).append('<td>'+ name +'</td>');
                    $(new_tr).append('<td>'+ hobby +'</td>');
                    $(new_tr).append('<td><button class="fire">删除</button></td>');
                    $(new_tr).append('<td><button class="edit">编辑</button></td>');
                    $('tbody').append(new_tr);
                } else {
                    alert('内容不能为空!')
                }
            } else {
                $editTr.children().eq(1).text(name);
                $editTr.children().eq(2).text(hobby);
                $('#commit').removeData('xyh');
            }
        });
    
        // 模态对话框的取消
        $('#qx').click(function () {
            $('.cover,.user_msg').addClass('hide');
        });
        //删除  事件委托
        $('tbody').on('click','.fire',function () {
            $(this).parent().parent().remove()
        });
    
        // 编辑
        $('tbody').on('click','.edit',function () {
            $('.cover,.user_msg').removeClass('hide');
            var name_value = $(this).parent().prev().prev().prev().text();
            var hobby_value = $(this).parent().prev().prev().text();
            $('#user').val(name_value);
            $('#hobby').val(hobby_value);
            var $currentTr = $(this).parent().parent();
            $('#commit').data('xyh', $currentTr);
        })
    
    </script>
    </body>
    </html>
    表格操作
  • 相关阅读:
    注册表修改大全(浏览文章时可以使用CTRL+F查找)
    怎样彻底删除系统服务项
    Linux查看文件编码格式及文件编码转换
    使用回收站主键名、索引名问题
    Aix5.3安装Bash Shell环境
    让AIX下的sqlplus也支持回显功能
    Oracle查看表空间使用率SQL脚本
    笔记本电脑内网、外网一起使用
    Oracle数据库为何出现乱码
    Oracle中varchar2(20)和varchar2(20 byte)区别
  • 原文地址:https://www.cnblogs.com/sandy-123/p/10596638.html
Copyright © 2011-2022 走看看