python之路(17)jquery入门及ajax使用

目录


引入jquery库

 <script src="jquery-3.1.1.js"></script> 

页面载入

  在页面加载等html语句加载完了,在加载js代码

    $(document).ready(function () {
        #jquery语句
    })
    
    简写:
    $(function () {
        #jquery语句
    })

寻找元素(选择器和筛选器)

基本选择器

$("*")    $("#id")    $(".class")    $("element")    $(".class p")

层级选择器

$(".outer div")    $(".outer>div")   $(".outer+div")    $(".outer~div")

>  : 按照子代(向内一层)选择 

紧挨着向下寻找

~  : 不必紧挨着向下寻找

基本筛选器

$("li:first")     $("li:eq(2)")     $("li:even")     $("li:gt(1)")     $("li:lt(1)")

属性选择器

$('[id="div1"]')     $('[chen="18"][id="div1"]')

表单选择器

$("[type='text']")----->$(":text")        注:只适用于input标签 (type可以用:表示) 

筛选器

$("li").first()      $("li").last()         $(".outer").children("p") 找子代       $(".outer").find("p") 找后代
$("li").next()        $("li").nextAll()       $("li").eq(2).nextUntil("#end") 选择第二个到最后
$("li").prev()       $("li").prevAll()       $("li").eq(2).prevUntil("li:eq(0)") 选择第二个到第一个
$(".inner").parent()        $(".inner").parents()        $(".inner").parentsUntil()
$(".inner").siblings()    寻找上下紧挨的标签

 form表单数据获取

//直接获取表单的所有数据
var data = $('#form').serialize()   

 循环遍历

方法一
    arr=[11,22,33]
    $.each(arr,function (x, y) {
        #x是索引下标
        #y是值
    })

方法二
    $("p").each(function () {
        #遍历所有p标签
        $(this)
    })

属性操作(attr、prop、css、html)

    ------------------------属性
    $("").attr()
    $("").prop()
    $("").removeAttr()
    $("").removeProp()
    ------------------------css类
    $("").addClass()
    $("").removeClass()
    ------------------------HTML代码/文本/值
    $("").html()
    $("").text()
    $("").val()
    -------------------------css
    $("").css("color","red")

 $("").attr()   可以获得属性值,两个参数添加属性,用来使用自定义的属性

   注意:在遇到固有属性(本身标签自带的属性 如:input checked属性)就会遇到问题,在checked属性里,用attr获取会有checked和undefined两种状态,如果返回true和false会更加方便判断,因此以引入prop()方法

 $("").prop()    用来使用标签本身固有的属性(判断 input checked属性返回的true和false两种状态,而不是checked和undefined) 

 文档处理(插入、替换、删除、复制)

内部插入
    $("").append(content|fn)            ----------->$("p").append("<p>hello</p>")
    $("").appendTo(content)             ----------->$("p").append("div")
    $("").prepend(content)              ----------->$("p").append("<p>hello</p>")
    $("").prependTo(content|fn)         ----------->$("p").append("div")
    
外部插入
    $("").after(content|fn)             ---------->$("p").after("<p>hello</p>")
    $("").before(content|fn)            ---------->$("p").before("<p>hello</p>")
    $("").insertAfter(content)          ---------->$("p").insertAfter("#foo")
    $("").insertBefore(content)         ---------->$("p").insertBefore("#foo")
    
替换
    $("").replaceWith(content|fn)
    
删除
    $("").empty()
    $("").remove()
    
复制
    $("").clone()

 css操作(css、位置、大小)

css
    $("").css("color","red")
    
位置
    $("").offset(content)
    $("").position()
    $("").scrollTop()
    $("").scrollLeft()
    
大小
    $("").height()             内容
    $("").innerHeight()        内容+padding
    $("").outerHeight()        内容+padding+border
    $("").outerHeight(true)    内容+padding+border+margin
    $("").width()             
    $("").innerWidth()       
    $("").outerWidth()       
    $("").outerWidth(true)   

  $("").position().top  相当于已定位父代的偏移量,如果父带没有定位,默认根据视口

  $("").scrollTop() 监听滑轮与窗口的距离

  window.onscroll(function () {
     var cuerrent = $(window).scrollTop()
  })

jquery事假绑定和事件委托

事件绑定

$("").click(function () {
        
})
    
$("").bind("clink",function () {
        
})

 事件委托 : 标签绑定事件后,即使后面创建新的标签,也会绑定事件

//子标签的事件绑定委托给父标签来做
$("父标签").on("click","子标签",function () {
        
})

动画效果

显示隐藏(参数设置时间)

    $("").show()       $("").hide()       $("").toggle()  

滑动(参数设置时间)

    $("").slideDown()       $("").slideUp()     $("").slideToggle()  

淡入淡出(参数设置时间)

    $("").fadeIn()       $("").fadeOut()       $("").fadeToggle()      $("").fadeTo(1000,04)

回调函数  

    $("").show(1000,function () {
        #这里是动画结束后调用的方法
    })

扩展方法与插件

$.extend(objcet)           #为JQuery添加一个静态方法
$.fn.extend(object)        #为JQuery实例添加一个方法

    // 静态方法
    jQuery.extend({
        min: function (a,b) {return a < b ? a : b },
        max: function (a,b) {return a > b ? a : b },
    });
    console.log($.min(3,4))

    // 实例方法
     $.fn.extend({
         "print" : function () {
             console.log($(this).html())
         }
     });
     $("").print();
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>大图轮播</title>
    <script src="jquery-3.1.1.js"></script>
    <style>
        .outer{
            790px;
            height: 340px;
            margin: 80px auto;
            position: relative;
        }

        .img li{
            position: absolute;
            list-style: none;
            top: 0;
            left: 0;
        }
        .num{
            position: absolute;
            bottom: 15px;
            left: 280px;
            list-style: none;
        }

        .num li{
            display: inline-block;
             18px;
            height: 18px;
            border-radius: 50%;
            background-color: white;
            margin-left: 13px;
        }

        .btn{
            position: absolute;
            top:0;
             30px;
            height: 60px;
            background-color: #603cf0;
            color: white;

            text-align: center;
            line-height: 60px;
            font-size: 30px;
            opacity: 0.7;
            margin-top: 130px;
            display: none;
            cursor:pointer;
        }

        .right{
            right: 0;
        }

        .left{
            left: 0;
        }

        .num .active{
            background-color: red;
        }
        .outer:hover .btn{
            display: block;
        }
    </style>

</head>
<body>

    <div class="outer">
        <ul class="img">
            <li><a href=""><img src="img/1.jpg"></a> </li>
            <li><a href=""><img src="img/2.jpg"></a> </li>
            <li><a href=""><img src="img/3.jpg"></a> </li>
            <li><a href=""><img src="img/4.jpg"></a> </li>
            <li><a href=""><img src="img/5.jpg"></a> </li>
            <li><a href=""><img src="img/6.jpg"></a> </li>

        </ul>

        <ul class="num">
            <!--<li class="active"></li>-->
            <!--<li></li>-->
            <!--<li></li>-->
            <!--<li></li>-->
            <!--<li></li>-->
            <!--<li></li>-->
        </ul>

        <div class="left btn"><</div>
        <div class="right btn">></div>
    </div>


    <script>
        //创建jquery自动创建按钮标签
        var $img_num = $(".img li").length;

        for (var i=0;i<$img_num;i++){
             $(".num").append("<li></li>")
        }

        $(".num li").eq(0).addClass("active")
// 手动轮播

        var i = 0;

        $(".num li").mouseover(function () {
            i = $(this).index();
            $(this).addClass("active").siblings().removeClass("active");
            $(".img li").eq(i).fadeIn().siblings().fadeOut();
        })
// 自动轮播

        var c = setInterval(GO_R,1500);

        function GO_R() {
            if (i == $img_num-1) {
                i = -1;
            }
            i++;
            $(".num li").eq(i).addClass("active").siblings().removeClass("active")
            $(".img li").eq(i).fadeIn(1000).siblings().fadeOut(1000)
        }

        function GO_L() {
            if (i == 0) {
                i = $img_num;
            }
            i--;
            $(".num li").eq(i).addClass("active").siblings().removeClass("active")
            $(".img li").eq(i).fadeIn(1000).siblings().fadeOut(1000)
        }

        $(".outer").hover(function () {
            //停留的时候执行
            clearInterval(c)
        },function () {
            //离开的时候执行
            c=setInterval(GO_R,1500)
        })
// button 加定播
        $(".right").bind("click",GO_R)
        $(".left").bind("click",GO_L)

    </script>
</body>
</html>
大图轮播
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<select id="provinces">
    <option value="">请选择省份</option>
    <!--<option value="">河北省</option>-->
    <!--<option value="">河南省</option>-->
    <!--<option value="">北京</option>-->
</select>

<select name="" id="citys">
    <option value="">请选择城市</option>
</select>



<script>


    data={"河北省":["石家庄","廊坊"],"山西":["晋城","大同"],"陕西":["西安","延安"]};
    var pro_ele=document.getElementById("provinces");
    var city_ele=document.getElementById("citys")

    for(var i in data){
        var ele=document.createElement("option");
        ele.innerHTML=i;
        pro_ele.appendChild(ele)
    }

    pro_ele.onchange=function () {
        console.log(this.selectedIndex);
        console.log(this.options[this.selectedIndex])

        var citys=data[this.options[this.selectedIndex].innerHTML];

        city_ele.options.length=1;

        for(var i=0;i<citys.length;i++){
            var ele=document.createElement("option");
             ele.innerHTML=citys[i];
            city_ele.appendChild(ele)
        }

    }



</script>


</body>
</html>
js二级联动

ajax使用

  使用ajax可以通过不刷新界面的情况下进行后台的数据交互,和页面的更新

       $.ajax({
                url:'',  //url地址
                type: 'GET',  //传递的方式
                data:{}, //发送的数据
                success:function (arg) {
                    //这里是返回的响应
                }
            })

 注:data的value包含数组的时候,要加上 traditional:true 

Ajax试用项目仓库地址:https://gitee.com/addr_devon/ajaxtest-django

Ajax进阶及jsonp跨域请求:https://www.cnblogs.com/shuzhixia/p/11225319.html

原文地址:https://www.cnblogs.com/shuzhixia/p/10867521.html