jQuery

jquery是一个快速、小且功能丰富的JavaScript库。使HTML文档的遍历和操作、事件处理、动画和Ajax等操作变得更加简单;使用了一个易于使用的API,可以跨多种浏览器工作。

影响性能,每个请求都需要下载jQuery文件,大量请求也会浪费带宽。

选择器

#id:根据id匹配一个元素;

element:根据给定的元素标签名匹配所有元素;

.class:根据给定的css类名匹配元素;

*:匹配所有元素;

selector1,selector2,selectorN:指定任意多个选择器,并将匹配到的元素合并到一个结果内;

$("#myDiv")
$("div")
$(".myClass")
$("*")
$("div, span, p.myClass")
基础选择器

ancestor descendant:在给定的祖先元素下匹配所有的后代元素

parent > child:在给定的父元素下匹配所有的子元素;

prev + next:匹配所有紧接在 prev 元素后的next元素;

$("form input")
$("form > input")
$("label + input")
层级

:first:获取第一个元素;

:last:获取最后一个元素;

:even:匹配所有索引值为偶数的元素,从 0 开始计数;

:odd:匹配所有索引值为奇数的元素,从 0 开始计数。

$('li:first')
$('li:last')
$("tr:even")
$("tr:odd")
筛选器

[attribute]:匹配包含给定属性的元素。

[attribute=value]:匹配给定的属性是某个特定值的元素

$("div[id]")  //有id属性的div元素
$("input[name='user']")
属性

:input:查找所有的input元素;

:text:匹配所有的单行文本框;

:password:匹配所有密码框;

:submit:查找所有提交按钮;

...
$(":input")
$(":text")
$(":password")
$(":submit")
...
表单

属性

对于HTML元素本身就带有的固有属性,在处理时,使用prop方法;

对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。

attr(name|properties|key,value|fn):设置或返回被选元素的属性值。

removeAttr(name):删除匹配元素中的一个属性;

// 获取src属性值
$("img").attr("src")
// 通过字典对象设置属性
$("img").attr({ src: "test.jpg", alt: "Test Image" })
// 通过键值对设置属性
$("img").attr("src","test.jpg");
// 回调函数
$("img").attr("title", function() { return this.src });
// 删除属性
$("img").removeAttr("src");
attr属性

prop(name|properties|key,value|fn):获取在匹配的元素集中的第一个元素的属性值;

removeProp(name):用来删除由.prop()方法设置的属性集。

// 查看checkbox是否被选中
$("input[type='checkbox']").prop("checked");
// 禁用所有checkbox
$("input[type='checkbox']").prop({disabled: true});
// 选中所有的checkbox
$("input[type='checkbox']").prop("checked", true);
// 通过函数设置checkbox全部选中
$("input[type='checkbox']").prop("checked", function() {return true;});
// 删除p标签的luggageCode属性
$("p").removeProp("luggageCode")
prop属性

HTML代码

html([val|fn]):获取第一个匹配元素的html内容;设置所有的匹配元素的html内容。

text([val|fn]):获取第一个匹配元素的文本内容;设置所有的匹配元素的文本内容。

val([val|fn|arr]):设置或获得匹配元素的当前的value属性值。

// html内容
$('p').html();
$("p").html("Hello <b>world</b>!");
// 内容文本
$('p').text();
$("p").text("Hello world!");
// value属性值
$("input").val();
$("input").val("hello world!");
html代码

CSS类

addClass(class|fn):为所有匹配的元素添加指定的类名;

removeClass([class|fn]):从所有匹配的元素中删除全部或者指定的类;

toggleClass(class|fn[,sw]):如果存在(不存在)就删除(添加)一个类。

// 为匹配的元素添加类
$("p").addClass("selected");
$("p").addClass("selected1 selected2");
// 从匹配的所有元素中删除类
$("p").removeClass("selected");
//删除匹配元素的所有类
$("p").removeClass();
// 为匹配的元素切换 'selected' 类
$("p").toggleClass("selected");
CSS类

DOM

内部插入

append(content|fn):向每个匹配的元素内部追加内容;

appendTo(content):把所有匹配的元素追加到另一个指定的元素元素集合中;

prepend(content|fn):向每个匹配的元素内部前置内容;

prependTo(content):把所有匹配的元素前置到另一个指定的元素元素集合中。

// 向所有p标签元素的内容中追加html内容
$("p").append("<b>Hello</b>");
// 向所有的div标签元素中追加id为main的标签
$("#main").appendTo("div");

$("p").prepend("<b>Hello</b>");
$("p").prependTo("#foo");
内部插入

外部插入

after(content|fn):在每个匹配的元素之后插入内容;

before(content|fn):在每个匹配的元素之前插入内容;

insertAfter(content):把所有匹配的元素插入到另一个指定的元素元素集合的后面;

insertBefore(content):把所有匹配的元素插入到另一个指定的元素元素集合的前面。

// 在所有段落之后插入一些HTML标记代码
$("p").after("<b>Hello</b>");
// 在所有段落之后插入一个DOM元素
$("p").after( $("#foo")[0] );
$("p").before("<b>Hello</b>");
$("p").before( $("#foo")[0] );
// 把所有段落插入到一个元素之后
$("p").insertAfter("#foo");
$("p").insertBefore("#foo");
外部插入

筛选

eq(index|-index):获取当前链式操作中第N个jQuery对象,返回jQuery对象;

first():获取第一个元素;

last():获取最后一个元素。

filter(expr|obj|ele|fn):筛选出与指定表达式匹配的元素集合;

map(callback):将一组元素转换成其他数组。

// 获取匹配的第二个元素
$("p").eq(1)
// 获取匹配的第一个元素
$('li').first()
// 获取最后一个元素
$('li').last()
// 保留带有select类的元素
$("p").filter(".selected")
// 把form中的每个input元素的值建立一个列表
$("p").append( $("input").map(function(){return $(this).val();}).get().join(", ") );
过滤

children([expr]):所有子元素的集合。

siblings([expr]):所有兄弟元素的集合

next([expr]):下一个兄弟元素

nextAll([expr]):之后的所有兄弟元素

nextUntil([e|e][,f]):查找当前元素之后所有的同辈元素,直到遇到匹配的那个元素为止

prev([expr]):下一个兄弟元素

prevAll([expr]):之前的所有兄弟元素

prevUntil([e|e][,f]):查找当前元素之前所有的同辈元素,直到遇到匹配的那个元素为止

parent([expr]):父级元素

parents([expr]):祖先元素的集合

parentsUntil([e|e][,f]):查找当前元素的所有的父辈元素,直到遇到匹配的那个元素为止。

$("div").children()
$("div").children('p')  //所有为p标签的子元素
$("div").siblings()
$("p").next()
$("p").nextAll()
$('#table').nextUntil('tr')
$("p").parent()
$("span").parents()
$('li').parentsUntil('.main')
查找

事件

事件委托

后续添加进来的元素也会监听事件

on(events,[selector],[data],fn):在选择元素上绑定一个或多个事件的事件处理函数。

one(events,[data],fn):为每一个匹配元素的特定事件(像click)绑定一个一次性的事件处理函数。

// 点击段落时,显示其文本内容
$("p").on("click", function(){
alert( $(this).text() );
});
// 阻止div标签下a标签跳转页面
$("div").on("a", function(event) {
  event.preventDefault();
});

// 当所有段落被第一次点击的时候,显示所有其文本
$("p").one("click", function(){
  alert( $(this).text() );
});
事件委托

事件

 后续添加的元素不会监听事件。

$("p").click();      //单击事件
$("p").dblclick();    //双击事件
$("input[type=text]").focus()  //元素获得焦点时,触发 focus 事件
$("input[type=text]").blur()   //元素失去焦点时,触发 blur事件
$("button").mousedown()//当按下鼠标时触发事件
$("button").mouseup()  //元素上放松鼠标按钮时触发事件
$("p").mousemove()     //当鼠标指针在指定的元素中移动时触发事件
$("p").mouseover()     //当鼠标指针位于元素上方时触发事件
$("p").mouseout()     //当鼠标指针从元素上移开时触发事件
$(window).keydown()    //当键盘或按钮被按下时触发事件
$(window).keypress()   //当键盘或按钮被按下时触发事件,每输入一个字符都触发一次
$("input").keyup()     //当按钮被松开时触发事件
$(window).scroll()     //当用户滚动时触发事件
$(window).resize()     //当调整浏览器窗口的大小时触发事件
$("input[type='text']").change()    //当元素的值发生改变时触发事件
$("input").select()    //当input 元素中的文本被选择时触发事件
$("form").submit()     //当提交表单时触发事件
$(window).unload()     //用户离开页面时
事件event

ajax

$.ajax(url,[settings])

url:一个用来包含发送请求的URL字符串

settings:AJAX 请求设置。所有选项都是可选的。

accepts:通过请求头发送给服务器,告诉服务器当前客户端可以接受的数据类型;

async:默认为true,所有请求均为异步请求;

contentType:发送信息至服务器时内容编码类型(默认: "application/x-www-form-urlencoded; charset=UTF-8");

data:发送到服务器的数据,将自动转换为请求字符串格式;

dataType:预期服务器返回的数据类型,如果不指定,jQuery将自动根据HTTP包MIME信息来智能判断;

type:请求方式,默认GET;

headers:一个额外的"{键:值}"对映射到请求一起发送;

timeout:设置请求超时时间(毫秒)

beforeSend:发送请求前执行的函数(全局);

complete:请求完成后回调函数(全局)

success:请求成功后的回调函数(全局)

error:请求失败时调用的函数(全局)

statusCode:可以针对返回不同响应码来设置不同的函数;

jsonp:一个jsonp请求中重写回调函数的名字,比如{jsonp:'callback'}会导致将"callback=?"传给服务器

jsonpCallback: 为jsonp请求指定一个回调函数名。

<script src="/static/js/jquery-3.4.1.min.js"></script>
<script>
    $("#submit").on('click',function(){
        $.ajax({
            url: "/ajax2.html",
            type: 'POST',
            headers: {foo: "hi"},
            data: {username: "jerry", password: "123"},
            dataType: "json",
            beforeSend: function(){
                alert('before');
            },
            success: function(data, status){
                //data = JSON.parse(data);  如果dataType不指定json,需要对data转换
                console.log(data);
                console.log(status);
            },
            statusCode: {
                "400": function(){
                    alert(400);
                },
                "404": function(){
                    alert(404);
                }
            }
        })
    })
</script>
ajax请求

JSONP

基于django的后端代码

def ajax2(request):
    func = request.GET.get('callback', None)
    data = {'user': 'admin', 'city': 'beijing', 'job': 'teacher'}
    return HttpResponse('%s(%s)' % (func,data))

自定义回调函数名

<script src="/static/js/jquery-3.4.1.min.js"></script>
<script>
    $("#submit").on("click", function(){
        $.ajax({
            url: "172.30.100.111:/jsonp.html",
            dataType: "jsonp",
            jsonp: "callback",
            jsonpCallback: "fetch",
        })
    });
    function fetch(data){
        console.log(data)
    }
</script>
JSONP指定callback

不自定义回调函数名,直接通过success调用。

<script src="/static/js/jquery-3.4.1.min.js"></script>
<script>
    $("#submit").on("click", function(){
        $.ajax({
            url: "172.30.100.111:/jsonp.html",
            dataType: "jsonp",
            jsonp: "callback",
            success: function(data){
                console.log(data)
            },
        })
    });
</script>
JSONP不指定callback

 

posted @ 2019-09-12 10:59  houyongchong  阅读(135)  评论(0编辑  收藏  举报