jQuery

jQuery

一个快速的,简洁的JavaScript框架。

jq的设计思想

选择网页元素
1.模拟css选择器
$("#div1").css("backgroundColor","red");
2.独有的表达式选择
$("li:first").css("backgroundColor", 'red');
3.多种筛选方式
$("li:eq(2)").css("backgroundColor", 'red');
//$("li").eq(2).css("backgroundColor", 'red');
jQuery的写法
1.方法函数化
$(function(){
    //添加一个点击事件
    $("h1").click(function(){
        alert("我被点击了");
    })
 });
2.链式操作
$("h1").click(function(){
                    alert("单击");
                }).css("backgroundColor", 'orange')
                .mouseover(function(){
                    this.style.backgroundColor = 'red';
                }).mouseout(function(){
                    this.style.backgroundColor = 'blue';
                })
3.取值赋值合体
alert($("input").val());
$("input").val("world hello");

JQuery和JS可以共存,但是不能混用。

jQuery方法
filter()

过滤 对已经获取到的网页元素进行过滤

not

filter的反义词

has

拥有,直接判定子节点中是否有符合条件的元素。

$(function(){     
$("div").filter(".box").css("backgroundColor", 'orange');        $("div").not(".box").css("backgroundColor", 'orange');     $("div").has(".box").css("backgroundColor", 'orange');
})
prev ()

查找当前兄弟节点中的上一个节点

next()

查找当前兄弟节点中的下一个节点

find()

查找子节点

index()

获取当前节点在兄弟节点中的下标

eq(下标)

通过下标获取指定的元素节点

alert($("h3").index());
$("li").eq(3).css("backgroundColor", 'orange');
attr()

设置和修改行间属性

			//一次性修改多条属性
                $("#div1").attr({
                    title: 'world',
                    class: "xxxx",
                    yyy: "zzz"
                })
addClass()
removeClass()

【注】操作class属性

$(function(){
                $("#div1").addClass("box3 box4 box2");
                $("#div1").removeClass("box2 box3");
            })
width()
innerWidth()
outerWidth()
$(function(){
                // alert($("#div1").css("width")); //"100px" 字符串
                alert($("#div1").width()); //width
                alert($("#div1").innerWidth());  //width + padding
                alert($("#div1").outerWidth());  //width + border + padding
                alert($("#div1").outerWidth(true)); //width + border + padding + margin
                
            })
insertBefore() before()

链式操作的主语是不一样的

insertAfter() after()
appendTo()

插入到子节点的末尾 appendChild(类似JS的方法) append()

prependTo() prepend()

插入到子节点的首位

remove()
$(function(){
                 //找到span节点插入到div的前面
                // $("span").insertBefore($("div"));

                //找到div节点,插入到span节点的后面
                // $("div").insertAfter($("span"));

                //找到span节点,插入到div节点的子节点的末尾
                // $("span").appendTo($("div"));

                //找到span节点,插入到div节点子节点的首位
                // $("span").prependTo($("div"));

                // $("div").remove();

                 //找到span节点插入到div的前面
                // $("span").insertBefore($("div")).css("backgroundColor", 'red');

                //div节点前面是span
                $("div").before($("span")).css("backgroundColor", 'red');
             })
scrollTop() 输出滚动高度

offset() 直接获取当前元素,距离最左边的距离,margin不算数的。
position() 直接获取,当前元素,距离第一个有定位父节点的距离,margin算在内
offsetParent() 查找第一个有定位的父节点,如果父节点没有定位就继续往上去找,最终找到html节点。

$(function(){
                // alert($("#div2").offset().left);

                 alert($("#div2").position().left)
                // alert($("#div2").position().top)

                $("#div2").offsetParent().css("backgroundColor", 'yellow');
            })
val() value

获取/设置表单元素的值

size()

输出,获取网页元素的个数

each() 遍历
		$(function(){
                 alert($("input").val()); //JQ取值只能去第一个符合条件元素的值

                 $("input").val("hello world"); //JQ赋值批量操作,会对所有获取到的元素进行赋值。
                /*
                    css()
                    attr()
                    html()
                    【注】都是批量操作。
                */
                 alert($('input').size());
                alert($("input").length); //jq里面的

                //循环
                $("input").each(function(index, item){
                     item.value = index;//js
                    //$(item).val(index);//jq
                })
            })		
特效函数
hover(funcOver, funcOut)

//移入移出

hide() 隐藏

第一个参数:动画持续的毫秒数
第二个参数:回调函数,动画结束的时候执行的

show() 显示

【注】动画效果是,从左上角收起和从左上角展开

slideDown()
slideUp()

动画效果是卷闸效果。

fadeIn() 淡入
fadeOut() 淡出
fadeTo

(动画持续时间, 透明度0~1, 回调函数);

$("#div2").fadeTo(2000, 1, function(){    
$("#div1").html("移出")
})
动画函数

animate
默认的运动形式是 慢快慢
匀速 “linear”
慢快慢 “swing”
拓展更多animate的运动形式:
引入 jquery-ui

我们可以在每次调用animate之前先去调用一次stop关闭上一次定时器

$("#div1").stop(); //停止第一个动画,当时后续动画正常运动
$("#div1").stop(true); //停止所有动画
$("#div1").stop(true, true); //停止所有动画,并且将当前正在进行的动画,直接到达目的值
$("#div1").finish(); //停止所有动画,并且将所有的动画都到达目的值
delay() 延迟动画
$("#div1").animate({width: 300}, 2000).delay(4000).animate({height: 300}, 2000);
remove() 删除元素节点

【注】并不会保留这个元素节点上之前的事件和行为

detach() 删除元素节点

【注】会保留这个元素节点上之前的事件和行为


JQuery 标签间的内容 html() 相当于innerHTML
JQuery 标签间纯文本 text() 相当于innerText

$(function(){
        /*  alert($("#div1").html()); //<em>em</em>div文本<strong>strong</strong>
        alert($("#div1").text()); //emdiv文本strong */
        // $("#div1").html("<h1>hello world</h1>");//自动解析
        $("#div1").text("<h1>hello world</h1>");//纯文本
            })
            
<div id = 'div1'><em>em</em>div文本<strong>strong</strong></div>
节点操作

【注】下述所有的方法的参数都是选择器
siblings() 用来除当前节点外,所有的兄弟节点
nextAll() prevAll()
parentsUntil() nextUntil() prevUntil()

$(function(){
                $("#p1").siblings().css("backgroundColor", 'blue');
//              $("#p1").nextAll().css("backgroundColor", 'red');
//              $("#p1").prevAll("h1").css("backgroundColor", 'red');
//              $("#p1").nextUntil("strong").css("backgroundColor", 'orange');
//              $("#p1").prevUntil("h1").css("backgroundColor", 'orange');
//              $("#p1").parentsUntil("body").css("backgroundColor", 'green');
            })
wrapAll() 整体包装

wrap() 每一个获取到的元素节点单独包装wrapInner() 内部包装
unwrap() 删除包装 删除上面一层包装,不包括body节点

wrapInner() 内部包装

		$(function(){
                 //我们给页面上所有的span节点加一个包装,直接JQ创建节点的代码
                  $("span").wrap("<p class = 'box' title = 'hello'></p>");
                 $("span").wrapAll("<p class = 'box' title = 'hello'></p>");
                 $("span").wrapInner("<p class = 'box' title = 'hello'></p>");
                $("span").unwrap(); //没有参数
             })
parent() 获取父节点

parents() 获取父节点们 参数选择器
closest() 必须传入参数,参数也是选择器,只获取第一个符合条件的元素,从自己开始去查找的

clone()

默认只会克隆节点本身,并不会克隆我们元素节点的行为和事件

clone(true) 既会克隆节点本身,还会克隆元素节点的行为和事件

add()

可以将多个选择器拼接在一起

slice() slice(start, end) [start, end)
获取指定范围内获取到的元素节点。

数据串联化

serialize() 将我们表单中的数据拼接成querystring(查询字符串) name1=value1&name2=value2
search ?name1=value1&name2=value2
querystring name1=value1&name2=value2
serializeArray() 将表单数据拼接成数组

事件
事件绑定 off on

【注】通过事件监听,后面的的事件没有被覆盖

$(function(){

             //1、给一个事件添加一个函数
            /*  $("#div1").on("click", function(){
                 alert("hello");
             }) */

             //2、同时给多个事件添加一个函数, 多个事件之间可以通过空格隔开
             /* var i = 0;
             $("#div1").on("click mouseover", function(){
                $(this).html(i++);
             }) */

             //3、给不同的事件添加不同的函数
             $("#div1").on({
                 click: function(){
                     alert("点击");
                 },
                 mouseover: function(){
                     $(this).css("backgroundColor", 'orange');
                 },
                 mouseout: function(){
                     $(this).css("backgroundColor", 'blue');
                 }
             })

             $("#div1").click(show);

             function show(){
                 alert("show");
             }

             //4、事件委托(后添加的事件也可以点击)
             /* 
                第二个参数,是触发对象的选择器
              */
             /* $("ul").on("click", "li.box", function(){
                $(this).css("backgroundColor", 'red');
             })
             var i = 6;
             $("#btn1").click(function(){
                 //新增li节点
                $(`<li class = 'box'>${i++ * 1111}</li>`).appendTo($("ul"));
             }) */
             //取消事件
             $("#cancel").click(function(){
                // $("#div1").off(); //取消所有事件上的所有函数
                // $("#div1").off("click"); //取消某一个事件下的所有函数

                $("#div1").off("click", show); //取消某一个事件下指定的函数
             })
         })
ready 事件

$(document).ready() 事件触发在当前的document加载完成以后执行。
window.onload();
document加载完毕肯定是在window加载完毕之前。

1快 2 快我是onload

window.onload = function(){
               alert("我是onload")
           }
            $(function(){
                alert(1);
            });
            $(document).ready(function(){
                alert(2);
            })
事件的细节

【注】都是兼容的后。
• ev pageX

which
鼠标事件:button
1 左键
2 滚轮
3 右键

keydown: keyCode 键码
keypress: charCode 字符码 不支持功能键 区分大小写

preventDefault stopPropagation

【注】大家不能为了使用JQ而使用JQ。如果实际开发的时候JS一些比较的简单的操作,没必要写成JQ代码。

$(function(){
$(“div”).click(function(ev){
alert(this.id);

                 ev.stopPropagation();
             })
             $("a").click(function(ev){
                /*  ev.preventDefault();
                 ev.stopPropagation(); */

                 //既阻止事件冒泡,又阻止默认行为
                 return false;
             })

             $(document).mousedown(function(ev){
               /*  alert(ev.pageX + ", " + ev.pageY); //带滚动距离
                alert(ev.clientX + ", " + ev.clientY); //可视窗口为原点 */

                alert(ev.which);
             })

             /* $(window).keydown(function(ev){
                 alert(ev.which);
             }) */

             $(window).keypress(function(ev){
                 alert(ev.which);
             })
         })
JQ的工具方法

JQ的工具方法和我们自己封装的js方法没有任何区别。
( ) 下 的 常 用 方 法 ( 都 没 用 了 , E C M A 5 和 E C M A 6 类 似 功 能 的 函 数 ) J Q 的 方 法 调 用 : ()下的常用方法(都没用了,ECMA5和ECMA6类似功能的函数) JQ的方法调用: ()(ECMA5ECMA6)JQ().xxx() ( ) . y y y ( ) 必 须 J Q 对 象 调 用 这 个 函 数 J Q 的 工 具 方 法 : ().yyy() 必须JQ对象调用这个函数 JQ的工具方法: ().yyy()JQJQ.xxx() $.yyy()
• type() 输出当前数据类型 typeof(对象)
• trim()
• inArray() indexOf() 查找某个元素的下标
• proxy() 功能类似于bind $.proxy()
• noConflict()
• $.parseJSON() JSON.parse()
• makeArray() 将伪数组转成数组。 Array.from()

jQuery的cookie

具体调用的格式
$.cookie(name) 通过name取值
$.cookie(name, value) 设置name和value
$.cookie(name, value {
可选项
raw: true value不进行编码
默认false value要进行编码的
})
$.cookie(name, null); 删除cookie

jQuery的ajax

data 下载到的数据
statusText 下载的状态 success
xhr ajax对象

				$.ajax({
                         type: "get",//指定下载的方式
                         url: "https://api.asilu.com/weather/",//下载的路径
                         data: {
                             city: "青岛"//传递的参数
                         },
                         dataType: "jsonp",//jsonp跨域
                         success: function(data, statusText){
                             // alert(data + ", " + statusText);
                             console.log(data);

                         },
                         error: function(msg){
                             alert(msg);
                         }
                     })
JSONP跨域的原理及实现

JSONP是一种解决跨域问题的方法,并不是一种数据格式(不同于JSON),是一种绕过同源策略实现跨域获取数据的解决方案,是一种非正式传输协议

同源策略是一种安全策略,所有支持JavaScript的浏览器都会使用同源策略

同源是指协议、端口、域名相同,不同源将无法请求到对应数据

接口实现方法:JSONP实现跨域,是利用src或href属性不受同源策略限制的特点,动态创建script标签,将远程接口赋值给src获取数据,并通过回调函数来接受和处理数据,达到跨域的目的。

**jquery实现:**jquery把jsonp的实现封装到了ajax中,但jsonp的实现与ajax的实现原理根本不是一回事。ajax的核心是通过XMLHttpRequest获取非本页内容,而jsonp的核心则是通过HTTP来动态添加

优点:

不受同源策略的限制
兼容性好,在老版本浏览器中仍可运行,不需要XMLHttpRequest或ActiveX的支持
在请求完毕后可以通过调用callback的方式回传结果,将回调方法的权限给了调用方、

缺点:

只支持GET请求而不支持POST等其它类型的HTTP请求
只支持跨域HTTP请求这种情况,不能解决不同域的两个页面之间如何进行JavaScript调用的问题
jsonp在调用失败的时候不会返回各种HTTP状态码
存在一定的安全问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值