zoukankan      html  css  js  c++  java
  • jQuery常用操作

    jQuery加载

    将获取元素的语句写到页面头部,会因为元素还没有加载而出错,使用$(document).ready(function(){})方法解决这个问题,它的速度比

    原生的 window.onload 更快,即在DOM结构加载完毕后就会执行。

    $(document).ready(function(){//...});
    $(function(){//..});
    

    选择器

    基本选择器

    • id选择器$('#myId')
    • class选择器$('.myClass')
    • 标签选择器$("div")
    • 属性选择器 $("input[type='text']") (取到类型是text的input标签)
    • 组合选择器
    方法 描述
    $('#item li span') 选择id为item元素下的所有li下的span元素
    $("div.box") 找到所有类名为box的div标签
    $("#id1, .className1") 找到id为id和类名为className1的元素
    $("div>input") 找到div标签里面的所有input子标签
    $("div+p") 找到div后面的一个兄弟p标签
    $("div~p") 找到div后面的所有兄弟p标签

    条件选择器

    • 找到所有后代中有p标签的div标签$("div:has(p)")或者$('div').has('p')
    • 找到不包含myClass类的div标签$("div:not(.myClass)")或者$('div').not('.myClass')
    • 找到所有后代中不含a标签的li标签$("li:not(:has(a))")
    • 第一个:first 或者.first()
    • 最后一个:last或者.last()
    • 索引等于index的那个元素:eq(index)或者.eq()
    • 匹配所有大于给定索引值的元素:gt(index)
    • 匹配所有小于给定索引值的元素:lt(index)
    • 选择class等于myClass的div元素$('div').filter('.myClass')
    • 匹配所有索引值为偶数的元素(包括0):even  
    • 匹配所有索引值为奇数的元素:odd

    表单选择器

    :text :password :file :radio
    :checkbox :submit :reset :button

    选中type为text的input标签$(":text")

    表单属性

    :enabled (激活)   :disabled (禁用)

    :checked (选中)   :selected (选中)

    1. 找到可用的input标签 $("input:enabled")

    2. 返回选中的标签 $("input:checked")

    3. 返回select选中的标签 $(":selected")

    4. 获取选中标签将其设置为非选中状态 $("input:checked").prop("checked",false)

    选择器转移

    下个元素

    1. 选择div元素后面紧挨的同辈元素$('div').next()
    2. 选择div元素后面所有的同辈元素$('div').nextAll()
    3. 获得div后面所有跟随的同胞元素,但不包括被选择器$("div").nextUntil(".item")

    上个元素

    1. 选择div元素前面紧挨的同辈元素$('div').prev()
    2. 选择div元素之前所有的同辈元素$('div').prevAll()
    3. 获得div前面所有跟随的同胞元素,但不包括被选择器$("div").prevUntil(".item")

    父级元素

    $("#id").parent()

    $("#id").parents() 查找当前元素的所有的父辈元素

    $("#id").parentsUntil(".item") 查找当前元素的所有的父辈元素,直到遇到匹配到item类的元素

    同级元素

    选择div的同级元素 $('div').siblings()

    子元素

    选择div的所有子元素$('div').children()

    查找后代元素

    选择div内的class等于myClass的元素$('div').find('.myClass')等价于$("div .myClass")

    样式操作

    CSS样式

    1. 获取div的样式 $("div").css("width")
    2. 设置div的样式$("div").css("width","30px")

    注意:选择器获取的多个元素,获取信息获取的是第一个,比如:$("div").css("width"),获取的是第一个div的widthfont-size采用驼峰命名 $("div").css({fontSize:"30px",color:"red"})

    类名操作

    1. 添加类名addClass

      为id为div的对象追加样式divClass2$("#div").addClass("divClass2")

    2. 移除类名removeClass

      移除id为div的对象的class名为divClass的样式$("#div").removeClass("divClass")

      移除多个样式$("#div").removeClass("divClass divClass2")

    3. 切换类名toggleClass

      切换类名,如果有就移除item,如果没有就添加item $("#div").toggleClass("item")

    获取尺寸及位置

    尺寸

    1. 获取元素宽和高width()height()
    2. 获取元素宽和高,包括paddingwidthheight innerWidth()innerHeight()
    3. 获取元素宽和高,包括paddingborderwidthheight outerWidth()outerHeight()
    4. 获取元素宽和高,包括padding和border以及margin的width和height outerWidth(true)outerHeight(true)

    位置

    1. 获取元素相对偏移或设置元素位置 offset()
    2. 获取元素相对父元素的偏移 position()
    3. 获取元素相对滚动条顶部的偏移 scrollTop()
    4. 获取元素相对滚动条左侧的偏移scrollLeft()
    5. 获取页面滚动距离$(document).scrollTop()
    6. 获取窗口滚动距离$(window).scrollTop()

    返回顶部案例

    <div class="back_top">返回顶部</div>
    <script type="text/javascript">
        $(document).ready(function() {
            //窗口滚动事件
            $(window).scroll(function() {
                var sc=$(window).scrollTop();
                if(sc>200){
                    $(".back_top").css("display","block");
                }
                else{
                    $(".back_top").css("display","none");
                }
            });
            $(".back_top").click(function(){
                // var sc=$(window).scrollTop();
                // 动画效果
                $("body,html").animate({scrollTop:0},500);
            });
        });
    </script>
    

    文本操作

    文本

    获取所有匹配元素的内容text()

    设置所有匹配元素的内容text(值)

    html

    取得第一个匹配元素的html html()

    val值

    1. 获取第一个匹配元素的当前value值 val()
    2. 设置所有匹配元素的value值val(值)
    3. 设置多选的checkbox、多选select的值 val([val1, val2])

    常用于input标签值的获取和修改

    属性操作

    attr() (attribute属性)

    1. 获取第一个匹配的属性 attr(k) 
    2. 修改所有匹配元素属性 attr(k,v)
    3. 为所有匹配元素设置多个属性值 attr({k1: v1, k2:v2})
    4. 从每一个匹配的元素中删除一个属性 removeAttr(k)

    prop()(property属性)

    1. 获取属性prop(k)
    2. 修改属性 prop(k,v)
    3. 移除属性 removeProp(k)

    attr()和prop()区别

    prop()是获取标签原始的属性(如,img标签上的src属性),不能自定义属性。

    attr()是获取标签上现有的属性,也可以自定义属性。

    具有 true 和 false 两个属性的属性,如 checked, selected 或者 disabled 使用prop(),其他的使用 attr()

    元素节点操作

    创建节点

    var  oDiv1=$('<div>')
    var  oDiv2=$('<div>这是一个新的元素</div>')
    

    添加节点

    • 内部添加

      • 在现存元素的内部,从后面插入元素

        $(父节点)append(子节点)
        $(子节点)appendTo(父节点)

      • 在现存元素的内部,从前面插入元素

        $(父节点).prepend(子节点)
        $(子节点)prependTo(父节点)

    • 外部添加

      • 在现存元素的外部,从后面插入元素

        把b放到a的后面$(a).after(b)或者$(b).insertAfter(a)

      • 在现存元素的外部,从前面插入元素

        把b放到a的前面$(a).before(b)或者$(b).insertBefore(a)

    删除节点

    • 删除被选元素及其子元素remove()
    • 删除被选元素的子元素empty()

    替换节点

    • $(旧节点).replaceWith(新节点)
    • $(新节点).replaceAll(旧节点)

    克隆节点clone()

    clone(true),加参数表示克隆节点的同时也克隆事件

    jquery循环和data()

    each()

    对选择的对象集合分别进行操作,需要用到jquery循环操作。

    arr = [11,22,33,44]
    $.each(arr,function(i, v){
      console.log(i, v);//index是索引,value是每次循环的具体元素。
    })
    //结果:     0,11   1,22    2,33      3,44    
    
    $(function(){
        $('.list li').each(function(i){
            $(this).html(i);
        })
    })
    

    注意:如果对jQuery对象进行相同的操作时,不需要使用.each()方法。在遍历过程中可以使用 return false提前结束each循环。

    data()

    .data(key, value)

    在匹配的元素上存储任意相关数据。

    $("#div1").data("temp",true);将id为div1的标签添加数据temp,值为true。

    .data(key)

    获取匹配元素上的数据

    $("#div1").data("temp");获取id为div1的标签上的数据temp,返回true。

    .removeData(key)

    移除存放在元素上的数据

    $("#div1").removeData("temp"); 移除元素上temp对应的数据

    data()用途: 可在标签上存储全局变量,这样不会被其它函数修改。

    jQuery 事件

    常用事件

    方法 描述
    focus() $(selector).focus(function),元素获得焦点时触发
    blur() $(selector).blur(function),元素失去焦点时触发
    click() $(selector).click(function),单击元素时,发生 click 事件
    change() $(selector).change(function),元素的值改变时发生(仅适用于表单字段)
    keydown() $(selector).keydown(function),键按下的过程
    keyup() $(selector).keyup(function),键被松开
    hover() $(selector).hover(inFunction,outFunction),鼠标指针悬停在被选元素上时要运行的两个函数
    input() 该事件在 <input> <textarea> 元素的值发生改变时触发
    on() $(selector).on(event,childSelector(子选择器,可选),function),添加事件处理程序,适用于当前及未来的元素(如创建的新元素)
    off() $(selector).off(event,selector(可选),function(可选),map),移除通过 on() 方法添加的事件处理程序

    on()绑定事件

    on() 方法是 bind()live()delegate() 方法的新的替代品。

    $(selector).on(event,childSelector(子选择器,可选),function)

    $("table").on("click",".update",function () {...})
    //绑定多个事件可以在事件后加空格
    $("input").on('input blur',function() {...})
    

    注意:像click、keydown等事件,都可以使用.on()方法来绑定事件,但是hover事件就不能用.on()方法来绑定了。

    off()移除绑定

    off() 方法是 unbind()die()undelegate() 方法的新的替代品。

    $(selector).off(event,selector(可选),function(可选),map

    移除button的点击事件 $("button").off("click");

    鼠标事件案例

    <!DOCTYPE html>
    <html lang="zh-CN">
        <head>
            <meta charset="UTF-8">
            <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
            <title>鼠标事件</title>
        </head>
        <body>
            <div class="box" style=" 200px;height: 200px;border: 1px solid;"></div>
            <p></p><span></span>
            <script>
                //鼠标移入事件
                $(".box").on("mouseover",function () {
                    $(this).css('background','red');
                    $("p").text("鼠标移入");
                })
                //鼠标移出事件
                $(".box").on("mouseout",function () {
                    $(this).css('background','green');
                    $("p").text("鼠标移出");
                })
                //鼠标移动事件
                //e.clientX, ev.clientY来获取相对于窗口的鼠标位置
                //e.pageX,ev.pageY来获取相对于文档的坐标
                $(".box").on("mousemove",function (e) {
                    var x = e.clientX;
                    var y = e.clientY;
                    $("span").text("鼠标移动:X="+x+" Y="+y)
                })
            </script>
        </body>
    </html>
    

    事件冒泡

    当子元素事件触发时,会自动向父元素传递事件,如果父元素有同类型事件,则会自动触发,从而导致页面的混乱。

    阻止事件冒泡 event.stopPropagation()

    <body>
        <div class="item1">父元素
            <div class="item2">子元素</div>
        </div>
    <script>
            /*事件的冒泡 */
            $('.item1').click(function(event) {
                $('.item1').css('background','blue')
                event.stopPropagation();
            });
            $('.item2').click(function(event) {
                $('.item2').css('background','red')
            });</script>
    </body>
    

    阻止默认行为 event.preventDefault()

    // a标签单击时,阻止自动跳转
    $('a').click(function(event){
                alert('阻止默认行为');
                 event.preventDefault();
            })
    

    把阻止冒泡和阻止默认行为合并起来写,合并写法可以用return false;

    事件委托

    事件委托就是利用冒泡的原理,把事件加到父级上,通过父标签去捕获子标签的事件。

    优点:事件委托首先可以极大减少事件绑定次数,提高性能;其次可以让新加入的子元素也可以拥有相同的操作

    <ul id="list">
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>
    <script>
        //1.普通绑定
        $ali = $('#list li');
        // $ali会默认绑定元素个数的click事件
        $ali.click(function() {
            $(this).css({background:'red'});
        });
        })
        //2.事件委托绑定
        $list = $('#list');
        $list.on('li', 'click', function() {
            //$(this)是委托的子元素li
            $(this).css({background:'red'});
        });
    </script>
    

    jQuery效果

    animate()动画

    $(selector).animate({params},speed,callback);

    $("button").click(function(){
      var div=$("div");
      div.animate({left:'100px'},"slow");
      div.animate({fontSize:'3em'},1000);
    });
    

    fadeIn() 淡入

    $(selector).fadeIn(speed,callback);

    $("button").click(function(){
      $("#div1").fadeIn();
      $("#div2").fadeIn("slow");
      $("#div3").fadeIn(3000);
    });
    

    fadeOut() 淡出

    $(selector).fadeOut(speed,callback);

    fadeToggle() 切换淡入淡出

    $(selector).fadeToggle(speed,callback);

    fadeTo()透明度

    $(selector).fadeTo(speed,opacity,callback);

    $("button").click(function(){
      $("#div1").fadeTo("slow",0.2);
    });
    

    slideDown() 向下滑动

    $(selector).slideDown(speed,callback);

    slideUp() 向上滑动

    $(selector).slideUp(speed,callback);

    slideToggle() 向上或向下滑动切换

    $(selector).slideToggle(speed,callback);

    jQuery.ajax()

    ajax简介

    AJAX(Asynchronous Javascript And XML)翻译成中文就是 “异步的 Javascript 和 XML”。即使用 Javascript 语言与服务器进行异步交互,传输的数据为 XML(当然,传输的数据不只是 XML)。

    AJAX 不是新的编程语言,而是一种使用现有标准的新方法。

    AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。(这一特点给用户的感受是在不知不觉中完成请求和响应过程)

    AJAX 不需要任何浏览器插件, 无须刷新整个页面,但需要用户允许JavaScript在浏览器上执行。

    • 同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;
    • 异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求。

    ajax请求格式

    $.ajax({
        url:   "/user",
        type: "POST",
        traditional: "true",//设置traditional 为true阻止深度序列化
        data: { name: "John", location: "Boston" },
        dataType: "json",
        success: function (data) {
            //...
        },
        error: function (data) {
            //alert( "Request failed: " + data );
        }
    });
    

    url 一个包含发送请求的URL字符串.

    type (默认: 'GET')method选项的别名。jQuery 1.9.0 之前的版本,需要使用type选项。

    data 一个普通对象或字符串,通过请求发送给服务器。

    success 当请求成功后执行的回调函数。如果提供dataType选项,那么这个success选项是必须的。

    dataType 从服务器返回的预期的数据类型。默认:智能猜测(xml, json, script, text,html)。

    简化格式

    get请求

    $.get("test.php",
          function(data){
        //..
    }, "json");
    

    post请求

    $.post( "user/login",
           { username:$("#username").val(),
            password:$("#password").val(),
           },
           function (data) {
        if (!data.flag) {
            //登录失败
        }else{
            //登陆成功
        }
    },"json");
    

    serialize()

    描述:将用作提交的表单元素的值编译成字符串,用于 Ajax 请求。

    $("form").serialize();返回值:String

    注意: 只有 "successful controls"可以被序列化成字符串。其中,提交按钮的值不会被序列化。另外,如果想要一个表单元素的值被序列化成字符串,这个元素必须含有 name 属性。此外,复选框(checkbox)和单选按钮(radio)(input 类型为 "radio" 或 "checkbox")的值只有在被选中时才会被序列化。另外,文件选择元素的数据也不会被序列化。

  • 相关阅读:
    十九:数字排重
    十八:十六进制转八进制
    Dubbo Notes
    Concurrent Package
    MySQL(8.0)官方文档阅读笔记
    MyBatis笔记
    分布式事务
    RabbitMQ笔记
    Kafka官方文档阅读笔记
    Cassandra Note
  • 原文地址:https://www.cnblogs.com/liulyuan/p/13924794.html
Copyright © 2011-2022 走看看