zoukankan      html  css  js  c++  java
  • jQuery基础

    一 jQuery的简单介绍

      jQuery是一个快速、简洁的JavaScript框架。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。

      jQuery的核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的css选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。

    二 jQuery对象与DOM对象关系

      jQuery封装了DOM的一些复杂方法,两者可以互相转化,但是两者的方法不能互相混用。

    $ele  jQuery对象
    ele    DOM对象
    
    $(ele)-->jQuery对象
    $ele[0]--->DOM对象

     三  jQuery的操作

      http://www.w3school.com.cn/jquery/jquery_ref_selectors.asp 基本选择器 层级选择器 属性选择器 表单选择器  表单属性

      http://www.w3school.com.cn/jquery/jquery_selectors.asp

      http://www.w3school.com.cn/jquery/jquery_ref_css.asp       CSS操作,设置或返回元素的CSS属性

      http://www.w3school.com.cn/jquery/jquery_dimensions.asp   尺寸操作

      http://www.w3school.com.cn/jquery/jquery_ref_manipulation.asp    文档操作

      http://www.w3school.com.cn/jquery/jquery_ref_events.asp    事件参考手册

      http://www.w3school.com.cn/jquery/jquery_dom_get.asp    获得内容和属性

      http://www.w3school.com.cn/jquery/jquery_dom_set.asp    设置内容和属性

      http://www.w3school.com.cn/jquery/jquery_ref_attributes.asp    属性操作

      https://www.w3cschool.cn/jquery/html-prop.html      prop()方法

      http://www.w3school.com.cn/jquery/jquery_ref_effects.asp   效果函数

      http://www.w3school.com.cn/jquery/jquery_ref_events.asp    事件

      https://www.w3cschool.cn/jquery/event-on.html    事件绑定 on()方法

      http://www.w3school.com.cn/jquery/jquery_ref_traversing.asp    遍历函数

      http://www.w3school.com.cn/jquery/jquery_ref_data.asp    数据操作——指定的对象与任意数据相关联

      http://www.w3school.com.cn/jquery/jquery_ref_ajax.asp    jQuery参考手册——Ajax

    四  实现快速返回顶部并且实现离顶部一定距离不显示返回按钮,超出一定距离显示返回按钮。

      PS:

      Window 对象表示浏览器中打开的窗口。如果文档包含框架(frame 或 iframe 标签),浏览器会为 HTML 文档创建一个 window 对象,并为每个框架创建一个额外的 window 对象。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            *{
                margin: 0;
    
            }
            .s1{
                position: fixed;
                right: 10px;
                bottom:10px;
                color: lightcoral;
            }
        </style>
    </head>
    <body>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
    <div class="c">112</div>
        <span class="s1">返回</span>
        <script src="jquery-3.2.1.min.js"></script>
        <script>
            $('span').click(function () {
                $(window).scrollTop(0)
            });
            $(window).scroll(function () {
                if($(window).scrollTop()>200){
                    $('span').show()
                }
                else{
                    $('span').hide()
                }
            })
        </script>
    </body>
    </html>

    五 利用jQuery实现左侧菜单

      

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .title{
                background-color: lightblue;
            }
            .hide{
                display: none;
            }
        </style>
    </head>
    <body>
    <div class="title item" onclick="foo(this)">菜单一</div>
    <div class="con">
        <p>111</p>
        <p>111</p>
        <p>111</p>
    </div>
    <div class="title item" onclick="foo(this)">菜单二</div>
    <div class="con hide">
        <p>222</p>
        <p>222</p>
        <p>222</p>
    </div>
    <div class="title item" onclick="foo(this)">菜单三</div>
    <div class="con hide">
        <p>333</p>
        <p>333</p>
        <p>333</p>
    </div>
    <script src="jquery-3.2.1.min.js"></script>
    <script>
        function foo(self) {
            $(self).next().removeClass('hide').siblings('.con').addClass('hide')     //自己写还是会出错的。$(self)变为jQuery对象。在调用next()方法
        }
    </script>
    </body>
    </html>

      PS

        拿到对象后,javascript的方法是.classList.add('')和.classList.remove('')

        jQuery方法是$(self),在这里self是形参,代指对象。$(self).next().addClass('')  $(self).next().removeClass()。next(),addClass(),removeClass()都是jQuery方法。

       

      升级版

      两行代码搞定,一行代码也行。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .title{
                background-color: lightblue;
            }
            .hide{
                display: none;
            }
        </style>
    </head>
    <body>
    <div class="title item" >菜单一</div>
    <div class="con">
        <p>111</p>
        <p>111</p>
        <p>111</p>
    </div>
    <div class="title item" >菜单二</div>
    <div class="con hide">
        <p>222</p>
        <p>222</p>
        <p>222</p>
    </div>
    <div class="title item" >菜单三</div>
    <div class="con hide">
        <p>333</p>
        <p>333</p>
        <p>333</p>
    </div>
    <script src="jquery-3.2.1.min.js"></script>
    <script>
        $('.item').click(function () {
            $(this).next().removeClass('hide').siblings('.con').addClass('hide')
        }
        )
    </script>
    </body>
    </html>

    八 方法

      1 toggle()

      示例

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <ul>
            <li>11</li>
            <li>22</li>
            <li>33</li>
        </ul>
        <script src="jquery-3.2.1.min.js"></script>
        <script>
            $('li').click(function () {
                $(this).toggle(100);
                console.log(this);
            })
        </script>
    </body>
    </html>

    六 简单模拟注册页面

      

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <p>
        <label for="i1">姓名</label><input type="text" id="i1"><span></span>
    </p>
    <p>
        <label for="i2">密码</label><input type="text" id="i2"><span></span>
    </p>
    <input type="button" class="reg_btn" value="注册">
    <script src="jquery-3.2.1.min.js"></script>
    <script>
    
        $('.reg_btn').on('click', function () {
            $('span').text(''); //每次判断之前清空span标签。
            var flag = true;   //设置标志位
            $('input').each(function () {
                if ($(this).val().length === 0) {
                    $(this).next().text($(this).prev().text() + '不能为空')
                    flag = false;
                    return false             //终止each循环
                }
            });
            return flag;                      //return false。阻止button默认事件。原本是button绑定的事件执行完后,会自动执行原本的事件功能
        })
    
    </script>
    </body>
    </html>

     七  表格的增删改

      

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>周末作业大礼包</title>
        <style>
            .hide {
                display: none;
            }
    
            .shade {
                position: fixed;
                top: 0;
                left: 0;
                right: 0;
                bottom: 0;
                background-color: black;
                opacity: 0.5;
            }
    
            .modal {
                position: fixed;
                top: 50%;
                left: 50%;
                 400px;
                height: 200px;
                background-color: white;
                margin-top: -100px;
                margin-left: -200px;
    
            }
        </style>
    </head>
    <body>
    <button class="add">添加</button>
    
    <table border="1">
        <thead>
        <tr>
            <td>#</td>
            <td>姓名</td>
            <td>爱好</td>
            <td>操作</td>
        </tr>
        </thead>
        <tbody>
        <tr>
            <td>1</td>
            <td>Egon</td>
            <td>杠娘</td>
            <td>
                <button class="edit">编辑</button>
                <button class="delete">删除</button>
            </td>
        </tr>
        <tr>
            <td>2</td>
            <td>Alex</td>
            <td>吹牛逼</td>
            <td>
                <button class="edit">编辑</button>
                <button class="delete">删除</button>
            </td>
        </tr>
        <tr>
            <td>3</td>
            <td>小轩轩</td>
            <td>抽烟喝酒烫头</td>
            <td>
                <button class="edit">编辑</button>
                <button class="delete">删除</button>
            </td>
        </tr>
        </tbody>
    </table>
    
    <!--模态框开始-->
    <!--背景 遮罩层开始-->
    <div class="shade hide"></div>
    <!--背景 遮罩层结束-->
    <!--modal开始-->
    <div class="modal hide">
        <label for="">姓名<input id="modal-name" type="text"></label>
    
    
        <label for="">爱好<input id="modal-habit" type="text"></label>
    
        <input type="button" value="提交" class="submit">
        <input type="button" value="取消" class="cancel">
    </div>
    <!--modal结束-->
    <!--模态框结束-->
    
    <script src="../day61/jquery-3.2.1.min.js"></script>
    <script>
        // 新增按钮
        $(".add").on("click", function () {
            // 显示模态框
            // 去掉.hide (遮罩层和modal)
            showModal();
        });
    
        // 模态框上的提交按钮绑定事件
        // 1. 取值  --> 取的modal里面input的值  --> 保存到变量
        // 2. 添加一行新记录 --> 新的tr标签 --> 自己拼接(这段代码在事件委托示例里面)
        // 3. 清空modal里面input的值  --> .val("")  --> 把清空单独写一个函数
        // 4. 关闭模态框
        $(".submit").on("click", function () {
            // 1. 取值  --> 取的modal里面input的值  --> 保存到变量
            var name = $("#modal-name").val();
            var habit = $("#modal-habit").val();
            var num = $("tbody tr").length + 1;
            // 因为我们的编辑和新添加都用的一个模态框
            // 需要做判断,我到底是添加呢还是编辑呢?
            if ($(".modal").data("currentTr") === undefined) {
                // 不是编辑操作
                // 是新添加操作
                // 生成完整的tr
                var trEle = document.createElement("tr");
                var $trEle = $(trEle);
                $trEle.append("<td>" + num + "</td>");
                $trEle.append("<td>" + name + "</td>");
                $trEle.append("<td>" + habit + "</td>");
                $trEle.append("<td>
    " +
                    "            <button class="edit">编辑</button>
    " +
                    "            <button class="delete">删除</button>
    " +
                    "        </td>");
    
                // 把tr加到table里面
                $trEle.appendTo("tbody");
            }else {
                // 是一个编辑操作
                var $data = $(".modal").data("currentTr");
                // 这里可以删除掉.data("currentTr")
                $(".modal").removeData("currentTr");
                $data.eq(1).text(name);
                $data.eq(2).text(habit);
            }
            // 清空模态框里面的数据
            cleanModal();
            // 关闭模态框
            closeModal();
    
    
        });
    
        // 编辑按钮
    //    $(".edit").on("click", function () {
        $("table").on("click", ".edit", function () {
            // 1. 弹出模态框
            showModal();
            // 2. 取值 --> 当前行的姓名和爱好  --> 赋值给变量
            var $siblings = $(this).parent().siblings();
            var name = $siblings.eq(1).text();
            var habit = $siblings.eq(2).text();
            // 3. 给modal框里的input赋值
            $("#modal-name").val(name);
            $("#modal-habit").val(habit);
    
            // 把当前的tr这个jquery对象保存起来。保存起来,在后面拿出来可以直接用,就像直接取一样,这都可以!!!
            $(".modal").data("currentTr", $siblings);
    
        });
    
    
        // 点击模态框里面的提交按钮要做的事儿
        // 1. 取值  --> 取的modal里面input的值  --> 保存到变量
        // 做判断
        // 1. 如果能从$(".modal").data("tr")能取到值(undefined)表示这是一个编辑操作
        // 去替换当前tr的对应值
        // 否则就是一个新添加的操作
    
    
        // 删除按钮的事件
        // 1. 删除当前行
        // 2. 更新序号
    
        $("table").on("click", ".delete", function () {
            // 更新序号
            $(this).parent().parent().nextAll();  // 找到它后面所有的tr
            // 每一行的序号都减1
            $(this).parent().parent().nextAll().each(function () {
                var $currTd = $(this).children().first();
                var num = $currTd.text() - 1;  // 令人窒息的操作
                $currTd.text(num);
            });
    
           $(this).parent().parent().remove();
    
        });
    
        // 给取消按钮绑定事件
        $(".cancel").on("click", function () {
            closeModal();
        });
    
        function showModal() {
            // 显示模态框
            // 去掉.hide (遮罩层和modal)
            $(".shade").removeClass("hide");
            $(".modal").removeClass("hide");
        }
    
        function closeModal() {
            // 关闭模态框
            $(".shade").addClass("hide");
            $(".modal").addClass("hide");
        }
    
        function cleanModal() {
            // 清空模态框里面input的值
            $(".modal input:text").val("");
        }
    
    
    </script>
    
    </body>
    </html>

    24  使用 Python 的 Web 框架,做一个 Web 版本 TodoList 应用。

      简单实现了下,发现都忘的差不多了。

      todo.html

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
        <title>Title</title>
        <style>
            .hide {
                display: none;
            }
    
        </style>
        <link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.min.css">
    </head>
    <body>
    <div class="container">
        <div class="row">
            <div class="pull-right">
                <form class="form-inline">
                    <div class="form-group">
                        <label for="id_input1">名称</label>
                        <input type="text" class="form-control" id="id_input1" placeholder="筛选的字段">
                    </div>
                    <button type="submit" class="btn btn-default">搜索</button>
                </form>
            </div>
        </div>
        <div class="row">
            <div>
                <table class="table-bordered table-hover ">
                    <thead>
                    <tr>
                        <th class="col-md-8">任务</th>
                        <th class="col-md-4">管理</th>
                    </tr>
                    </thead>
                    <tbody>
                    {% for info in infos %}
                        <tr>
                            <td>{{ info.name }}</td>
                            <td><a href="">删除</a></td>
                        </tr>
                    {% endfor %}
                    </tbody>
                </table>
            </div>
        </div>
        <div class="row">
            <button type="button" class="btn btn-primary " data-toggle="modal" data-target="#myModal">
                创建任务
            </button>
    
            <!-- Modal -->
            <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
                <div class="modal-dialog" role="document">
                    <div class="modal-content">
                        <div class="modal-header">
                            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
                                    aria-hidden="true">&times;</span></button>
                            <h4 class="modal-title" id="myModalLabel">任务名称</h4>
                        </div>
                        <div class="modal-body">
                            <form action="" method="post"><textarea class="form-control" id="mission-text"></textarea>
                            </form>
                        </div>
                        <div class="modal-footer">
                            <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
                            <button type="button" id="id_save" class="btn btn-primary">保存</button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <!-- Button trigger modal -->
    
    
    <script src="/static/jquery-3.2.1.min.js"></script>
    <script src="/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
    <script>
        $('#id_save').on('click',function () {
            $.ajax({
                url:'/todo/',
                type:'post',
                data:{'mission':$('#mission-text').val()},
                success:function (data) {
                    if (data == '1'){
                        location.href='/todo/';
                    }
                    else
                        {
                        location.href='https://www.baidu.com';
                    }
    
                }
            })
        })
    
    </script>
    </body>

      views.py

    def todo(request):
        if request.method == 'POST':
            mission = request.POST.get('mission')
            if mission:
                Mission.objects.create(name=mission)
                return HttpResponse('1')
            else:
                return HttpResponse('数据不能为空!')
        infos = Mission.objects.all()
        return render(request,'todo.html',{'infos':infos})

      总结:

        1 模态框与jquery是基友。使用ajax 实现页面局部刷新的功能。

        2 使用模态框,提交的button 并不在 form 标签内,所以用,jquery 操作。

        3 jquery的基本操作

          $('#id') $('.class')

             $.ajax({

            url:'xx',

            type:'post',

            data:{'':"},

            success:fuction(data){

              if () {

                location.href='/xx/'            #根据后端返回的数据,由前面来实现页面跳转的功能。

                }

              else{}

              }

            }) 

  • 相关阅读:
    吴裕雄--天生自然 PHP开发学习:数组
    吴裕雄--天生自然 JAVASCRIPT开发学习:测试 jQuery
    【t065】最敏捷的机器人
    【t079】火星上的加法运算
    【t053】整数去位
    【9604】纪念品分组
    【心情】bjdldrz
    【9601】零件分组
    【9916】编辑距离
    【38.24%】【POJ 1201】Intervals
  • 原文地址:https://www.cnblogs.com/654321cc/p/7838431.html
Copyright © 2011-2022 走看看