1. 排队和并发

1.并发: 多个css属性同时变化
放在一个animate函数内的多个css属性默认并发变化

2.排队: 多个css属性先后变化
对同一个元素,先后调用多个动画API,都是排队执行
原理: 所有动画API起始并不是立刻开始动画,而仅是将当前动画函数加入元素的动画队列中等待执行。

停止动画: $(...).stop();
默认: 仅停止动画队列中,当前正在播放的一个动画,队列中后续动画,依然执行
如何停止动画,并清空队列: .stop(true)

选择器: :animated 可选择或判断一个正在播放动画的元素

2. 类数组对象操作

遍历
$(...).each(function(i,elem){
//this->当前elem
})
鄙视: $(...).each() vs $.each(数组/集合,fun)

查找
var i=$(...).index(要找的DOM元素/jq对象)
简化: 如果在一个父元素内查找子元素:

$(子元素).index();

3. 为jquery添加自定义方法

1.添加在jQuery.fn中
强调: jQuery.fn.自定义方法=function(){

    //this->将来调用该方法的jq对象
  }

2.调用时: $(...).自定义方法()

4. 插件: 为标准函数库或框架添加功能的第三方库

官方插件jQuery UI
使用jQueryUi:
先引入jquery.js,因为jQuery UI是基于jQuery开发的
再引入jquery-ui.js
再编写自定义脚本
包括: 
交互: 自学
效果:

a. 重写了三类简单动画API,添加了新的动效

b. 为addClass/removeClass/toggleClass,也添加了动效

c. 重写了animate方法,支持颜色动画

部件
什么是部件: 具有完整样式和行为的小功能
如何使用:

1. 引入: jquery-ui.css
2. 按照部件约定,编写html内容结构
3. 引入jquery.js和jquery-ui.js
4. 在自定义脚本中,找到插件的父元素,调用插件API

原理:

侵入性: 在开发者不知情的情况下,自动添加class和行为
优点: 简单
缺点: 不可维护

jQuery UI   vs   bootstrap

jQuery UI 傻瓜式,侵入式
优点: 简单

缺点: 不可维护

bootstrap 少量手动添加样式和行为(自定义扩展属性)
缺点: 相比jQuery UI,稍微麻烦
优点: 可定制

5. 第三方插件

文件上传
富文本编辑器
masonry: 彩砖墙/瀑布流

6. 自定义插件

何时: 只要希望复用一块功能和样式时,都要封装为插件
前提: 必须已经用原生的html,css,jss实现了插件的功能

2种封装插件的风格: 
jQuery侵入式——

1. 将插件所需的css提取出来,保存在单独的css文件中

2. 定义插件的js文件: 
    先检查是否提前引入了jQuery
    定义插件函数,保存在jQuery的原型对象jQuery.fn中

侵入: 根据插件需要,为子元素自动添加class
     为子元素绑定事件处理函数

3. 使用插件: 
    引入插件的css文件
    在body中按插件的规定,编写html内容
    引入jquery.js和插件的js文件
    在自定义脚本中,查找要应用插件的父元素,调用插件函数

Bootstrap DIY式——

1. 将css拷贝到独立的css文件中

2. 编写js:
    先验证是否提前加载了jQuery
    查找自定义扩展属性,为其绑定事件

3. 使用插件:
    引入插件的css
    按照插件的HTML格式要求,编写内容
    为插件的HTML元素手动添加class
    为触发事件的元素添加指定的自定义扩展属性

7. jQuery的ajax API

$.ajax({
type:"get/post",
url:"xxx",
data:"rawData"/{ 变量名:值, ...}
dataType:"json",
beforeSend(){

//在发送之前触发

}
completed(){

//只要请求完成,无论成功还是失败,都触发

}
success(data){

//请求成功触发

}
error(){

//发生错误时触发

}
}).then(data=>{
... ...
}).catch(err=>{ ... })

简写

专门发送get请求

$.get(url,data,dataType).then(data=>{ ... })

专门发送get请求,接收JSON响应,并自动转为js对象

$.getJSON(url,data).then(data=>{ ... })

专门发送get请求,接收js语句响应,并执行

$.getScript(url,data)

专门发送get请求,获取一段html代码片段的响应,并自动填充到前面的父元素中

$(父元素).load("xx.php/xx.html")
强调: 不支持then!

专门简化post请求的: 
$.post(url,data,dataType).then(data=>{ ... })

8. 跨域请求

跨域: 
从http://store.company.com/dir/...

允许跨域请求: link, img, script
不允许跨域: xhr对象 (ajax请求)
变通: script 需要服务器返回一段可执行的js语句

服务器应该返回包含数据的一条可执行的js语句

如何实现?
客户端实现: JSONP (填充式json)

1. 在客户端定义处理函数

2. 在按钮单击事件中,动态创建script元素,src设置为服务端地址,并携带请求参数callback=函数名

3. 在服务器端,接收请求参数中的函数名,将函数名和要返回的数据,拼接为一条可执行的js语句

4. 客户端script,请求服务端php,获得可执行语句,自动调用提前定义好的函数处理数据

5. 在客户端处理函数结尾,要动态删除script

起始jQuery的ajax api都可用, 只不过,dataType必须都写成jsonp,原理同上。

服务端: header("Access-Control-Allow-Origin:*");
允许客户端使用xhr对象跨域请求!

前端知识点总结——jQuery(下)的更多相关文章

  1. 前端学习之jquery/下

    前端学习之jquery 一 属性操作 html(): console.log($("div").html()); $(".test").html("& ...

  2. 前端知识点总结——jQuery(上)

    1.什么是jQuery jQuery: 第三方的极简化的DOM操作的函数库第三方: 下载极简化: 是DOM操作的终极简化: 1. DOM: 增删改查2. 事件绑定:3. 动画效果:4. Ajax DO ...

  3. FancySelect – 更好用的 jQuery 下拉选择框插件

    FancySelect 这款插件是 Web 开发中下拉框功能的一个更好的选择.FancySelect 使用方便,只要绑定页面上的任何 Select 元素,并调用就 .fancySelect() 就可以 ...

  4. js前端分页之jQuery

    锋利的js前端分页之jQuery 大家在作分页时,多数是在后台返回一个导航条的html字符串,其实在前端用js也很好实现. 调用pager方法,输入参数,会返回一个导航条的html字符串.方法的内部比 ...

  5. 前端学习之jquery

    前端学习之jquery 1.   什么是jQuery对象? jQuery对象就是通过jQuery包装DOM对象后产生的对象.jQuery对象是jQuery独有的.如果一个对象是jQuery对象,那么它 ...

  6. Vue.js中前端知识点总结笔记

    1.框架和库的区别: 框架:framework 有着自己的语法特点.都有对应的各个模块库 library 专注于一点 框架的好处: 1.提到代码的质量,开发速度 2.提高代码的复用率 3.降低模块之间 ...

  7. Web前端-Ajax基础技术(下)

    Web前端-Ajax基础技术(下) 你要明白ajax是什么,怎么使用? ajax,web程序是将信息放入公共的服务器,让所有网络用户可以通过浏览器进行访问. 浏览器发送请求,获取服务器的数据: 地址栏 ...

  8. 前端知识点总结(HTML)

    前端知识点总结(HTML) 一,头部常用的标签 1,link标签  (1),设置ico图标 <link rel="shortcut icon" href="favi ...

  9. 前端基础之:JQuery(可编辑版)

     前端基础之jquery   一 jQuery是什么? [1]   jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入其team. [2]   ...

随机推荐

  1. Spark、BulkLoad Hbase、单列、多列

    背景 之前的博客:Spark:DataFrame写HFile (Hbase)一个列族.一个列扩展一个列族.多个列 用spark 1.6.0 和 hbase 1.2.0 版本实现过spark BulkL ...

  2. jinja2批量生成python脚本

    ​ 在使用airflow的过程中需要大量的dag脚本进行性能测试,如果一个个去编写dag脚本未免太过麻烦,于是想到用python的jinja2模板引擎实现批量脚本生成. 先通过pip命令安装jinja ...

  3. Windows7关闭默认共享

    注意:禁用默认共享会导致安装ORACLE时执行先决条件检测不通过,要想安装ORACLE得先打开共享. 1.win+r 运行里输入compmgmt.msc进入计算机管理,在共享文件夹里,去掉所有的盘共享 ...

  4. STL中关于全排列next_permutation以及prev_permutation的用法

    这两个函数都包含在algorithm库中.STL提供了两个用来计算排列组合关系的算法,分别是next_permutation和prev_permutation. 一.函数原型 首先我们来看看这两个函数 ...

  5. Metasploit工具----辅助模块

    Metasploit框架(Metasploit Framework,MSF)是一个开源工具,旨在方便渗透测试,他是有Ruby程序语言编写的模板化框架,具有很好的扩展性,便于渗透测试人员开发.使用定制的 ...

  6. 54 (OC)* 网络七层架构

    一:TCP/IP协议 二:七层协议 1:物理层 物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境.  1.1:传输媒体和互连设备        物理层的媒体包括架空明线.平衡 ...

  7. rocketmq学习(二) rocketmq集群部署与图形化控制台安装

    1.rocketmq图形化控制台安装 虽然rocketmq为用户提供了使用命令行管理主题.消费组以及broker配置的功能,但对于不够熟练的非运维人员来说,命令行的管理界面还是较难使用的.为此,我们可 ...

  8. Salem and Sticks-萨鲁曼的棍子 CodeForce#1105A 暴力

    题目链接:Salem and Sticks 题目原文 Salem gave you 

  9. 【呕心总结】python如何与mysql实现交互及常用sql语句

    9 月初,我对 python 爬虫 燃起兴趣,但爬取到的数据多通道实时同步读写用文件并不方便,于是开始用起mysql.这篇笔记,我将整理近一个月的实战中最常用到的 mysql 语句,同时也将涉及到如何 ...

  10. Intellij IDEA 2019 + Java Spring MVC + Hibernate学习笔记(1)

    之前的技术栈一直是围绕.net 做的,现在.net 技术栈的使用越来越少,越来越窄.好多原来的同事都转Java开发了. 最近公司变动,自己需要重新找个坑,压力山大.好多要求Java技术栈的根本没机会进 ...