美文网首页
python全栈 part02 - 003 jQuery

python全栈 part02 - 003 jQuery

作者: drfung | 来源:发表于2018-01-04 10:53 被阅读19次

    jQuery

    jQuery参考中文文档

    jQuery可以看做是DOM/BOM/JavaScript的类库

    jQuery的版本:

    • 1.x 推荐,向前兼容性最好
    • 2.x
    • 3.x

    jQuery和Dom对象之间的转换:

    jquery对象[0] --> Dom对象
    Dom对象 --> $(Dom对象)
    

    jQuery常用用法:

    1. 查找元素

    DOM元素 10左右

    jQuery选择器:

    # 根据id查找
    $("#id")  
    
    # 根据class查找
    $(".c1")
    
    # 根据标签查找
    $("a")
    $("div")
    
    # 组合
    $("a,.c1,#id")
    
    # 层级
    $("#id a") # 在id下所有层级查找a标签
    $("#id>a") # 在id的下一层级中查找a标签
    
    # 基本
    :first
    :last
    :eq()
    
    # 属性
    $('[alex]') # 具有alex属性的所有标签
    $("[alex='123']") # alex属性等于123的标签
    $("input[type='text']") # input标签下所有type属性为text的
    $(":text") # 所有具有text属性值的标签
    

    多选反选全选实例用到的知识点:

    • 选择权
    • $('#tb:checkbox').prop('checked'); 获取值
    • $('#tb:checkbox').prop('checked', true); 设置值
    • jQuery方法内置循环: $('#tb:checkbox').xxxx
    • $('#tb:checkbox').each(function(k){//k为当前索引 this:DOM元素,转化为jQuery元素$(this)})
    • 三目运算: var v = 条件? 真值: 假值

    示例代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>s2</title>
    </head>
    <body>
        <input type="button" value="全选" onclick="checkAll();"/>
        <input type="button" value="反选" onclick="reverseAll();"/>
        <input type="button" value="取消" onclick="cancelAll();"/>
    
        <table id="tb" border="1">
            <thead>
                <th>选项</th>
                <th>IP</th>
                <th>Port</th>
            </thead>
            <tbody>
                <tr>
                    <td><input type="checkbox" /></td>
                    <td>1.1.1.1</td>
                    <td>3360</td>
                </tr>
                <tr>
                    <td><input type="checkbox" /></td>
                    <td>1.1.1.1</td>
                    <td>3360</td>
                </tr>
                <tr>
                    <td><input type="checkbox" /></td>
                    <td>1.1.1.1</td>
                    <td>3360</td>
                </tr>
                <tr>
                    <td><input type="checkbox" /></td>
                    <td>1.1.1.1</td>
                    <td>3360</td>
                </tr>
                <tr>
                    <td><input type="checkbox" /></td>
                    <td>1.1.1.1</td>
                    <td>3360</td>
                </tr>
            </tbody>
        </table>
    
        <script src="jquery-1.12.4.js"></script>
        <script >
            function checkAll(){
                $("#tb :checkbox").prop("checked", true);
            }
            function cancelAll(){
                $("#tb :checkbox").prop("checked", false);
            }
            function reverseAll(){
    
                $("#tb :checkbox").each(
                    // 方法一:
                    // function(){
                    //     if(this.checked){
                    //         this.checked=false;
                    //     }else{
                    //         this.checked=true;
                    //     }
                    // }
                    // 方法二
                    // function(){
                    //     if($(this).prop("checked")){
                    //         $(this).prop('checked', false);
                    //     }else{
                    //         $(this).prop('checked', true);
                    //     }
                    // }
                    // 方法三,三目运算
                    function(){
                        var v = $(this).prop('checked')?false:true;
                        $(this).prop('checked', v);
                    }
                );
            }
        </script>
    </body>
    </html>
    

    jQuery 筛选器

    # 向后
    $('#i1').next()
    $('#i1').nextAll()
    $('#i1').netxUtil('#i2')
    
    # 向前
    $('#i1').prev()
    $('#i1').prevAll()
    $('#i1').preUntil('#i2')
    
    # 父级
    $('#i1').parent()
    $('#i1').parents()
    $('#i1').parentsUntil()
    
    # 子级
    $('i1').children()
    
    # 兄弟
    $('i1').siblings()
    
    # 查找
    $('#i1').find()
    $('li:eq(1)')
    $('li').eq(1)
        first()
        last()
        hasClass('className')
    

    示例- 实现左侧菜单代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>s3</title>
        <style>
            .hide {
                display: none;
            }
            .header {
                background-color: black;
                color: wheat;
            }
            .content {
                min-height: 50px;
            }
        </style>
    </head>
    <body>
        <div style="height:400px;width:200px;border:1px solid #dddddd;">
            <div class="item">
                <div class="header">目录一</div>
                <div class="content hide">fuck 1</div>
            </div>
            <div class="item">
                <div class="header">目录二</div>
                <div class="content hide">fuck 2</div>
            </div>
            <div class="item">
                <div class="header">目录三</div>
                <div class="content hide">fuck 3/div>
            </div>
            <div class="item">
                <div class="header">目录四</div>
                <div class="content hide">fuck 4</div>
            </div>
        </div>
        <script src="jquery-1.12.4.js"></script>
        <script>
            $(".header").click(
                function(){
                    $(this).next().removeClass("hide");
                    $(this).parent().siblings().find(".content").addClass("hide");
    
                    // 链式编程
                    // $(this).next().removeClass("hide").parent().siblings().find(".content").addClass("hide");
                }
            )
        </script>
    </body>
    </html>
    

    文本操作

    $(..).text() # 获取文本内容
    #(..).text("<a>1</a>") # 设置文本内容
    
    $(..).html()
    $(..).html(<a>1</a>)
    
    $(..).val()
    $(..).var()
    

    样式操作

    addClass
    removeClass
    toggleClass
    

    属性操作

    # 专门用于做自定义属性
    $(..).attr('n')
    $(..).attr('n', 'v')
    $(..).removeAttr('n')
    
    # 专门用于checkbox,radio
    $(..).prop('checked')
    $(..).prop('checked', true)
    

    文档处理

    append
    prepend
    after
    before
    
    remove
    empty
    
    clone
    

    示例代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>s5-1</title>
        <style>
            .hide {
                display: none;
            }
    
            .modal {
                position: fixed;
                top: 50%;
                left: 50%;
                width: 500px;
                height: 400px;
                margin-left: -250px;
                margin-top: -200px;
                background-color: #eeeeee;
                z-index: 10;
            }
    
            .shadow {
                position: fixed:
                top: 0;
                right: 0;
                bottom: 0;
                left: 0;
                background-color: black;
                opacity: 0.6;
                z-index: 9;
            }
        </style>
    </head>
    <body>
    <a onclick="addElement();">Add</a>
    
    <table border="1" id="tb">
        <tr>
            <td target="hostname">pc1</td>
            <td target="port">80</td>
            <td target="ip">1.1.1.11</td>
            <td>
                <a class="edit">edit</a> | <a class="remove">remove</a>
            </td>
        </tr>
        <tr>
            <td target="hostname">pc2</td>
            <td target="port">80</td>
            <td target="ip">1.1.1.12</td>
            <td>
                <a class="edit">edit</a> | <a class="remove">remove</a>
            </td>
        </tr>
        <tr>
            <td target="hostname">pc3</td>
            <td target="port">80</td>
            <td target="ip">1.1.1.13</td>
            <td>
                <a class="edit">edit</a> | <a class="remove">remove</a>
            </td>
        </tr>
        <tr>
            <td target="hostname">pc4</td>
            <td target="port">80</td>
            <td target="ip">1.1.1.14</td>
            <td>
                <a class="edit">edit</a> | <a class="remove">remove</a>
            </td>
        </tr>
        <tr>
            <td target="hostname">pc5</td>
            <td target="port">80</td>
            <td target="ip">1.1.1.15</td>
            <td>
                <a class="edit">edit</a> | <a class="remove">remove</a>
            </td>
        </tr>
    </table>
    
    <div class="modal hide">
        <div>
            <input name="hostname" type="text"/>
            <input name="port" type="text"/>
            <input name="ip" type="text"/>
        </div>
    
        <div>
            <input type="button" value="cancel" onclick="cancelModal();"/>
            <input type="button" value="confirm" onclick="confirmModal();"/>
        </div>
    </div>
    
    
    <div class="shadow hide"></div>
    <script src="jquery-1.12.4.js"></script>
    
    <script>
        $(".remove").click(function () {
            $(this).parent().parent().remove();
        });
    
        function confirmModal() {
            var tds = $(".modal input[type='text']");
            // console.log(tds);
            var tr = document.createElement("tr");
            var td1 = document.createElement('td');
            // td1.innerHTML = "pc-test";
            td1.innerHTML = $(tds[0]).val();
            var td2 = document.createElement("td");
            td2.innerHTML = $(tds[1]).val();
            // td2.innerHTML = "8001";
            var td3 = document.createElement("td");
            // td3.innerHTML = "1.2.3.44";
            td3.innerHTML = $(tds[2]).val();
            var td4 = document.createElement("td");
            td4.innerHTML = '<a class="edit">edit</a> | <a class="remove">remove</a>';
    
            $(tr).append(td1);
            $(tr).append(td2);
            $(tr).append(td3);
            $(tr).append(td4);
    
            $('#tb').append(tr);
    
            $(".modal,.shadow").addClass("hide");
            $(".remove").click(function () {
                $(this).parent().parent().remove();
            });
            $(".edit").click(function () {
                $(".modal,.shadow").removeClass("hide");
                var tds = $(this).parent().prevAll();
                tds.each(
                    function () {
                        var n = $(this).attr('target');
                        var text = $(this).text();
                        var a1 = '.modal input[name="';
                        var a2 = '"]';
                        var temp = a1 + n + a2;
                        $(temp).val(text);
                    }
                );
            });
        }
    
        function addElement() {
            $(".modal,.shadow").removeClass("hide");
        }
    
        function cancelModal() {
            $(".modal,.shadow").addClass("hide");
            $(".modal input[type='text']").val("");
        }
    
        $(".edit").click(function () {
            $(".modal,.shadow").removeClass("hide");
            var tds = $(this).parent().prevAll();
            tds.each(
                function () {
                    var n = $(this).attr('target');
                    var text = $(this).text();
                    var a1 = '.modal input[name="';
                    var a2 = '"]';
                    var temp = a1 + n + a2;
                    $(temp).val(text);
                }
            );
        });
    </script>
    </body>
    </html>
    

    css处理

    $('t1').css('样式名称', '样式值')
    商品详情示例代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>s9-1</title>
        <style>
            .menu {
                background-color: #dddddd;
                height: 38px;
            }
            .menu .item-menu {
                line-height: 38px;
                float: left;
                color: black;
                border-right: 1px solid red;
                padding: 0 10px;
            }
            .active {
                background-color: darkred;
            }
            .hide {
                display: none;
            }
            .content {
                margin: 1px;
    
            }
        </style>
    </head>
    <body>
    <div style="width:700px;margin: 0 auto; border: 1px;">
        <div class="menu">
            <div class="item-menu active">菜单1</div>
            <div class="item-menu">菜单2</div>
            <div class="item-menu">菜单3</div>
        </div>
        <div class="content">
            <div>内容1</div>
            <div class="hide">内容2</div>
            <div class="hide">内容3</div>
        </div>
        <script src="jquery-1.12.4.js"></script>
        <script>
            $(".item-menu").click(
                function(){
                    $(this).addClass("active").siblings().removeClass("active");
                    $(".content").children().eq($(this).index()).removeClass("hide").siblings().addClass("hide");
                }
            );
        </script>
    </div>
    </body>
    </html>
    

    点赞实例用到的知识点:

    • $('t1').append()
    • $('t1').remove()
    • setInterval
    • 透明度 1 > 0
    • positon
    • 字体大小,位置
      参考代码:
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>s12</title>
        <style>
            .container {
                padding: 50px;
                border: 1px solid #dddddd;
            }
    
            .item {
                position: relative;
                width: 30px;
            }
        </style>
    </head>
    <body>
    <div class="container">
        <div class="item">
            <span>赞</span>
        </div>
    </div>
    <div class="container">
        <div class="item">
            <span>赞</span>
        </div>
    </div>
    <div class="container">
        <div class="item">
            <span>赞</span>
        </div>
    </div>
    <div class="container">
        <div class="item">
            <span>赞</span>
        </div>
    </div>
    
    <script src="jquery-1.12.4.js"></script>
    <script>
        $(".item").click(function () {
            addFavor(this);
        });
    
        function addFavor(self) {
            // DOM Object
            var fontSize = 15;
            var top = 0;
            var right = 0;
            var opacity = 1;
    
            var tag = document.createElement('span');
            $(tag).text("+1");
            $(tag).css('color', "green");
            $(tag).css("position", "absoluete");
            $(tag).css("fontSize", fontSize + "px");
            $(tag).css("right", right + "px");
            $(tag).css("top", top + "px");
            $(tag).css("opacity", opacity);
            $(self).append(tag);
    
            var obj = setInterval(function () {
                fontSize = fontSize + 10;
                top = top - 10;
                right = right - 10;
                opacity -= 0.1;
                $(tag).css("fontSize", fontSize + "px");
                $(tag).css("right", right + "px");
                $(tag).css("top", top + "px");
                $(tag).css("opacity", opacity);
                if(opacity < 0){
                    clearInterval(obj);
                    $(tag).remove();
                }
            }, 40);
        }
    </script>
    </body>
    </html>
    

    位置

    $(window).scrollTop() 获取
    $(window).scrollTop(0) 设置
    scrollLeft([var])
    
    offset().left   指定标签在html中的坐标
    offset().top    指定标签在html中的坐标
    
    position()  自定标签相对父标签(relative)标签的坐标
    
    $('i1').height() 获取标签的纯高度
    $('i1').innerHeight() 获取标签的边框 + 纯高度 + ?
    $('i1').outerHeight()   获取标签的边框 + 纯高度 + ?
    $('i1').outerHeight(true)   获取标签的边框 + 纯高度 + ?
    

    事件

    $('.c1').click()
    $('.c1')....
    
    $('.c1').bind('click', function(){})
    $('.c1').unbind('click', function(){})
    
    $('.c').delegate('a', 'click', function(){})
    $('.c').undelegate('a','click',function(){})
    
    $('.c1').on('click',function(){})
    $('.c1').off('click',function(){})
    

    阻止事件发生: return false

    当页面框架加载完成后,自动执行$(function(){ $(...)})

    示例1:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>s11</title>
    </head>
    <body>
        <input id="i1" type="text" />
        <input id="a1" type="button" value="add"/>
        <input id="a2" type="button" value="delete"/>
        <input id="a3" type="button" value="copy"/>
    
        <ul id="u1">
            <li>1</li>
            <li>2</li>
        </ul>
    
    <script src="jquery-1.12.4.js"></script>
    <script>
        $("#a1").click(function(){
            var v = $('#i1').val();
            var temp = "<li>" + v + "</li>";
            $('#u1').prepend(temp);
            // $('#u1').after(temp);
            // $('#u1').before(temp);
        });
        $("#a2").click(function(){
           var index = $('#i1').val();
           $('#u1 li').eq(index).remove();
           // $("#u1 li").eq(index).empty();
        });
        $("#a3").click(function(){
            var index = $("#i1").val();
            var v = $("#u1 li").eq(index).clone();
            $("#u1").append(v);
    
            // $("#u1 li").eq(index).remove();
            // $("#u1 li").eq(index).empty();
    
        });
    </script>
    </body>
    </html>
    

    jQuery扩展

    • $.extend $.方法
    • $.fn.extend $(..).方法

    相关文章

      网友评论

          本文标题:python全栈 part02 - 003 jQuery

          本文链接:https://www.haomeiwen.com/subject/dhtrnxtx.html