jQuery终极思想:创建jQuery对象(当发现相同的选择器在你的代码里出现多次时,请用变量把它储存起来。一切面向对象

认识jQuery

1、jQuery库可以做什么?

  • HTML元素选取
  • HTML元素操作
  • CSS操作
  • HTML事件函数
  • JavaScript特效和动画
  • HTML DOM遍历和修改
  • AJAX
  • Utilities

2、jQuery语法

jQuery 语法是通过选取 HTML 元素,并对选取的元素执行某些操作。

基础语法: $(selector).action()

语法解释:获取目标对象(选择器/HTML元素),然后对当前对象进行操作。

(在编程中,类似a.b这样的格式。可解释为先确定或者获取对象a,然后对a对象进行b操作)

3、在jQuery对象中无法使用DOM对象的任何方法。同样,DOM对象也不能使用jQuery里的方法。

4、jQuery对象与DOM对象的相互转换。

1)什么是jQuery对象?  

  • jQuery对象就是通过jQuery包装DOM对象后产生的对象。即jQuery对象是一个类似数组的对象。
  • 平时用到的jQuery对象都是通过$()函数制造出来的,$()函数就是一个jQuery对象的制造工厂。

2)在讨论jQuery对象和DOM对象的相互转换之前,先约定好定义变量的风格。

  1. 获取jQuery对象:  var    $variable  =  jQuery对象;
  2. 获取DOM对象:    var    variable  =  DOM对象;

3)jQuery对象转换DOM对象的两种转换方法。

  1. [index]方法  可将jQuery对象看成一个数组

var  $cr  =  $("#cr");

var  cr    =  $cr[0];

  1. get(index)

var $cr  =  $("#cr");

var cr    =  $cr.get(0);

4)DOM对象转成jQuery对象  对于一个DOM对象,只需要把$()把DOM对象包装起来,就可以获得一个jQuery对象。方式为$(DOM)对象。

var  cr  =  document.getElementById("cr");

var $cr =  $(cr);

5、jQuery中有关索引下标的细节

1)在选择器中,大部分的索引下标都是从0开始的。

2)索引下标的计算方式:按照顺序结构的方法进行计算,如果div中嵌套多个div,则外面大的div索引下标为0,然后嵌套的div按照顺序(即1,2,3.....)的方式进行计算,当当前大的div遍历结束后开始下一个同辈的div,这样以此类推,最后遍历完全部div。

6、jQuery在获取元素时,$符号里面的选择器在选择时可能既有双引号又有单引号。所以,在最外面是双引号的情况下,里面的符号要用单引号。例:$("div:has('.mini')").css("background" , "#bbffaa");

7、jQuery选择器中特殊字符的正确使用:在选择器中,偶尔会遇到表达式中含有”#“和”.“等特殊字符,如果按照普通的方式去处理的话就会出错,故而要用转义字符。

语法格式:\\特殊字符

注意:要用两个反斜杠。如:$("#id\\[1\\]");

8、jQuery中的is()方法

jQuery中的is()方法用来判断 jQuery对象与其判断对象是否匹配。

jQuery选择器

9、

jQuery DOM操作(元素节点操作)

10、什么是DOM?

  • DOM是一种与浏览器、平台、语言无关的接口,使用该接口可以轻松地访问页面中所有的标准组建。
  • 类描述对象的属性和方法。接口则包含类要实现的方法。
  • 将每个页面看成一份DOM(文档对象模型),每一份DOM都可以表示成一颗树,这棵树都由每一个DOM元素节点构成。DOM元素节点就是DOM对象

11、DOM操作的分类

1)DOM  Core

  1. 元素搜索(id、class、tag)
  2. 元素操作
  3. 成员操作(属性操作、样式的操作)

2)HTML-DOM:主要描述各种HTML元素的属性。

3)CSS-DOM:主要作用是获取和设置style对象的各种属性。

注:不管是JavaScript还是jQuery中的DOM操作都会涉及到一系列相关的方法,所以在进行DOM操作时都要想到创建“对象”的好习惯。当然,不同类型的对象创建对象的方法肯定不一样。(创建对象意识是jQuery的核心)

12、jQuery中的DOM操作(节点操作

1)查找节点

  1. 查找元素节点
  2. 查找属性节点        attr()

2)创建节点

  1. 创建元素节点

两个步骤完成元素节点的创建:

  • 创建新元素
  • 将新元素插入文档中

例:var  $li_1 = $("<li></li>");

  var  $li_2 = $("<li></li>");

  $("ul").append($li_1);      //添加到<ul>节点中,使之能在网页中显示。

  $("ul").append($li_2);      //可以采取链式写法:$("ul").append($li_1).append($li_2)

  1. 创建文本节点

只要在创建的元素节点中插入文本内容即可。

             例:var  $li_1 = $("<li>香蕉</li>");

               var  $li_2 = $("<li>雪梨</li>");

               $("ul").append($li_1).append($li_2);        

  1. 创建属性节点

             与创建文本节点类似,只要在创建的同时添加属性即可。

             例:var  $li_1 = $("<li  title='香蕉'>香蕉</li>");

               var  $li_2 = $("<li  title='雪梨'>雪梨</li>");

               $("ul").append($li_1).append($li_2);

3)插入节点

动态创建HTML元素并没有实际用处,还需要将新创建的元素插入文档中。将新创建的节点插入文档最简单的办法是,让它成为这个文档的某个节点的子节点。

以下通过图的形式进行对比分析:(实例可看创建节点

注:插入节点的所有方法中,内容中的标签只起到“修饰”的作用。

4)删除节点

  1. remove()
  2. detach()
  3. empty()

5)复制节点  clone()

例1:

$("ul li").click(function() {

  $(this).clone().appendTo("ul");  //复制当前点击的节点,并将它追加到<ul>元素中。

});

注:此时复制后的新元素没有复制的功能。

例2:

$(this).clone(true).appendTo("body");  //注意参数true

注:在clone()方法中传递一个参数true,它的含义是复制元素的同时复制元素中所绑定的事件。因此该元素的副本也同样具有复制的功能。

6)替换节点

下面两个方法的作用都是讲所有匹配的元素都替换成指定的HTML或者DOM元素。

  1. replaceWith()
  2. replaceAll()

注:如果在替换之前,已经为元素绑定事件,替换后原来绑定的事件将会与被替换的元素消失,需要在新元素上重新绑定事件。

7)包裹节点

  1. wrap()                          //该方法是将所有元素进行单独的包裹,即分别进行一个一个包裹
  2. wrapAll()                      //该方法是将所有匹配的元素用一个元素来包裹(如果被包裹的多个元素间有其它元素,其它元素会被放到包裹元素之后)
  3. wrapLnner()                 //该方法将每一个匹配的元素的子内容(包括文本节点)用其它结构化的标记包裹起来。

8)属性操作

  1. 获取属性和设置属性                attr()                              //多个属性设置整体用{}括起来,各属性间用”,“隔开,每一对的语法格式为”a“:"b"。
  2. 删除属性                                  removeAttr()

9)样式操作

  1. 获取样式和设置样式                attr()
  2. 追加样式                                  addClass()
  3. 移除样式                                  removeClass()
  4. 切换样式                                  toggle()或者toggleClass()
  5. 判断是否含有某个样式             hasClass()

例:$("p").addClass("another");  //addClass里面的是准备要添加的类。

  $("p").removeClass("high")  //它的作用是从匹配的元素中删除全部或者指定的class。

注:

切换样式语法格式:

$toggleBtn.toggle(function() {

  //显示元素

  },function() {

  //隐藏元素

})

toggleClass():控制样式上的重复切换,如果类名存在则删除它,如果类名不存在则添加它。会自动切换。

  • 如果给一个元素添加多个class值,那么就相当于合并了它们的样式。如果有不同的class设定了同一样式属性,则后者覆盖前者。
  • 如果要进行多个class操作,可以采取链式写法,也可以在中间用空格隔开。例:$("p").removeClass("high  another");
  • 特别地在移除样式时,当它不带参数时,就会将clss中的值全部删除。
  • toggle()方法主要是控制行为上的重复切换。如果元素原来是显示的,则隐藏它;如果元素原来是隐藏的,则显示它。
  • hasClass()方法等同于is()方法。is()方法用来判断研究对象是否怎么怎么样。

10)设置和获取HTML、文本和值

  1. html()                          //此方法类似于javascript中的innerHTML属性,可以用来读取或者设置某个元素中的HTML内容。
  2. text()                           //此方法类似于javascript中的innerHTML属性,可以用来读取或者设置某个元素中的文本内容。
  3. val()                            //此方法类似于javascript中的value属性,可以用来设置和获取元素的值。

注:它们三者之间有何区别?

  • html()方法获取内容时,标签看做内容一起原样输出。设置内容时,标签用来修饰内容。
  • text()方法获取内容时,标签不会起修饰作用,只输出纯文本。设置内容时,会将标签看做内容,一起原样输出。
  • val()方法只应用于表单中的value属性。如果元素为多选,则返回一个包含所有选择的值得数组。(defaultValue属性包含该表单元素的初始值)

11)遍历节点(获取目标元素/对象)

  1. children()                                                           //该方法用于取得匹配元素的子元素集合。children()方法只考虑子元素而不考虑其他后代元素。
  2. next()                                                                 //该方法用于取得匹配元素后面紧邻同辈元素。
  3. prev()                                                                 //该方法用于取得元素前面紧邻的同辈元素。
  4. siblings()                                                            //该方法用于取得元素前后所有的同辈元素。
  5. parent()、parents()、closest()方法的区别?
  • parent是找当前元素的第一个父节点,不管匹不匹配都不继续往下找
  • parents是找当前元素的所有父节点 
  • closest() 是找当前元素的所有父节点 ,直到找到第一个匹配的父节点

13、CSS-DOM操作

1)利用css()方法获取元素的样式属性,也可以直接利用css()方法设置某个元素的单个或多个样式。类似attr()方法

利用opacity属性可以设置元素的透明度    例:$("p").css("opacity", "0.5");

2)height()                     获取或者设置元素的高度值

3)width()                       获取或者设置元素的宽度值

4)offset()、position()的区别? 

http://www.mobiletrain.org/page/html5.html

jQuery事件

事件的产生:用户对浏览器的操作引发了事件,事件的发生导致了JavaScript和HTML的交互。

14、jQuery事件语法:

$(document).ready(function() {

  //编写代码

});

简写方式:

$(function() {

  //编写代码

});

15、事件绑定

1)调用格式:bind(type[, data], fn);

  1. 第一个参数是事件类型
  2. 第二个参数为可选参数,作为event.data属性值传递给事件对象的额外数据对象。
  3. 第三个参数则是用来绑定的处理函数。

注意:当给被选对象元素绑定一个事件时,也可以直接写事件函数

例:

$("div").bind("click", function() {

  $("div").append("<p>click事件</p>");

});

可写为:

$("div").click(function() {

  $("div").append("<p>click事件</p>");

});

2)情况分类:(常见)

  1. 一个元素绑定一个事件
  2. 一个元素绑定多个事件
  3. 多个元素绑定同一个事件
  4. 元素绑定自定义事件(在模拟操作中使用)

注:

一个元素绑定多个事件,可采取链式写法(即多个事件之间用“圆点”隔开),也可以将两个事件写在一起(多个事件之间用空格隔开)。

$(function() {

  $("div").bind("mouseover mouseout", function() {

    $(this).toggleClass("over")

  })

})

3)其他用法:(详见jQuery代码实例

  1. 添加事件命名空间,便于管理(为元素绑定的多个事件类型用命名空间规范起来)
  2. 相同事件名称,不同命名空间执行方法(为元素绑定相同的事件类型,然后以命名空间的不同按需调用)

16、事件合成

1)hover()方法

作用:模拟光标悬停事件

语法:hover(enter, leave);

解释:当光标移动到元素上时,会触发指定的第一个函数(enter);当光标移出这个元素时,会触发指定的第二个函数(leave)。

注意:两个函数之间用逗号隔开

例:$(function() {

    $(".head").hover(function() {

      $(this).next().show();

    }, function() {

      $(this).next().hide();

    });

  });

2)toggle()方法

作用:

  • 模拟鼠标连续单击事件,第一次单机元素,触发指定的第一个函数(fn1),当两次单击同一元素时,则触发指定的第二个函数(fn2);如果有更多函数,则依次触发,直到最后一个。随后的每次单击都重复对这几个函数的轮番调用。
  • toggle()方法在jQuery中还有另外一个作用:切换元素的可见状态。如果元素是可见的,单击切换后则为隐藏;如果元素是隐藏的,单击切换后则为可见的。

语法:toggle(fn1,fn2,...,fn);

注意:两个函数之间用逗号隔开

例:$(function() {

    $(".head").toggle(function() {

      $(this).next().toggle();

    }, function() {

      $(this).next().toggle();

    });

  });

17、事件冒泡与事件捕获(详见jQuery中事件冒泡与事件捕获的区别

1)定义:

  1. 事件冒泡:事件开始时由具体的元素接受,然后逐渐向上传输到最不具体的节点。
  2. 事件捕获:不太具体的节点先捕获接收到事件,然后传递到具体的节点。
  3. JQuery中的事件绑定,都是属于事件冒泡。

2)阻止事件传播行为的两种方法:强烈统一建议用return false(理解:我只想要让触发对象执行某个动作,至于它之后的行为我不想让它继续执行)

  • 使用event对象的stopPropagation()函数

例:$("#outC").click(function(event){
    event.stopPropagation();
  });

  • 事件处理函数的返回值false

例:$("#outC").click(function(event){

  return false;
});

18、移除事件:

1)移除按钮元素上以前注册的事件

语法:unbind([type],[data]);

解释:

  1. 如果没有参数,则删除所有绑定的事件。
  2. 如果提供了事件类型作为参数,则只删除该类型的绑定事件。
  3. 如果把在绑定时传递的处理函数作为第二个参数,则只有这个特定的事件处理函数会被删除。

2)移除<button>元素的其中一个事件

前提:首先需要为这些匿名处理函数指定一个变量

one()方法:该方法使得处理函数执行一次。

one()方法语法结构:

one(type, [data], fn);

例:$("#btn").unbind("click", myFun2);

19、事件对象:

1)产生来源:在触发DOM上的某个事件时,会在事件处理程序函数中产生一个事件对象event,这个对象中包含着所有与事件有关的信息。包括导致事件的元素、事件的类型以及其他与特定事件相关的信息

2)语法示例:

$("element").bind("click", function(event) {

  //........

})

3)事件对象的属性:

1.event.type:获取事件的类型。

2.event.preventDefault():阻止事件的默认行为。

3.event.isDefaultPrevented():返回指定的event对象是否调用了event.preventDefault()方法。

4.event.stopPropagation():阻止事件冒泡。

5.event.target:获取到触发事件的元素。

6.event.relatedTarget:关联目标(属性返回当鼠标移动时那个元素进入或退出)。

7.event.pageX和event.pageY:获取到光标相对于页面的x坐标和y坐标。

8.event.which:在鼠标单击事件中获取到鼠标的左、中、右键;在键盘事件中获取键盘的按键。

9.event.result:获取被指定事件触发的事件处理器的最后一个值。

10.event.timeStamp:返回从1970年1月1日到事件发生时的毫秒数。

例:

$(function(){
  $("a[href='http://google.com']").click(function(event) {
    var tg = event.target; //获取事件对象
    alert( tg.href ) ;
    return false;//阻止链接跳转
  });
});

$(function(){
  $("a").mousedown(function(event){
    alert(event.which) // 1 = 鼠标左键 ; 2 = 鼠标中键; 3 = 鼠标右键
    return false;//阻止链接跳转
  })
})

$(function(){
    $("button").click(function(event) {
      return ("最后一次点击的鼠标位置是: X" +e.pageX + ", Y" + e.pageY);
    });
    $("button").click(function(event) {
      $("p").html(event.result);
    });
});

20、模拟操作:

语法:

trigger(type,[data])

原理:

先给被选对象元素绑定相应事件(自定义事件或者focus或者select或者其他事件),然后在被选对象点击事件中触发模拟操作。

解释:

  • trigger()方法触发被选元素上指定的事件以及事件的默认行为(动作)(比如表单提交)
  • 第一个参数是要触发的事件类型,第二个参数是要传递给事件处理函数的附加数据,以数组形式传递。

常见作用:

1)触发自定义事件

$(function(){
  $('#btn').bind("myClick", function(){
    $('#test').append("<p>我的自定义事件.</p>");
  });
  $('#btn').click(function(){
    $(this).trigger("myClick");
  });
});

2)传递数据

$(function(){
  $('#btn').bind("myClick", function(event, message1, message2){
    $('#test').append( "<p>"+message1 + message2 +"</p>");
  });
  $('#btn').click(function(){
    $(this).trigger("myClick",["我的自定义","事件"]);
  });
});

3)执行默认操作:trigger()方法触发事件后,会执行浏览器默认操作。(比如获得焦点)

$(function() {  

  $("input").select(function(){
    $("input").after("文本被选中!");
  });
  $("button").click(function(){
    $("input").trigger("select");
  });

});

注意:trigger()方法既能触发事件,也能让被选对象获得焦点。而triggerHandler()方法只能触发事件,不会获得焦点。

Web前端——jQuery----细节的更多相关文章

  1. Web前端JQuery面试题(三)

    Web前端JQuery面试题(三) 1.怎么阻止冒泡过程? stopPropagation(); // 阻止冒泡过程 2.ready()方法和onload()方法的区别? onload()方法要等页面 ...

  2. Web前端JQuery面试题(二)

    Web前端JQuery面试题(二) 1.请写出jquery的语法? <script type="text/javascript"> $(document).ready( ...

  3. Web前端JQuery面试题(一)

    Web前端JQuery面试题(一) 一:选择器 基本选择器 什么是#id,element,.class,*,selector1, selector2, selectorN? 答: 根据给定的id匹配一 ...

  4. Python之Web前端jQuery扩展

    Python之Web前端: 一. jQuery表单验证 二. jQuery扩展 三. 滚动菜单 一. jQuery表单验证: 任何可以交互的站点都有输入表单,只要有可能,就应该对用户输入的数据进行验证 ...

  5. web前端-----jQuery

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

  6. Web前端JQuery入门实战案例

    前端jquery入门到实战 为什么要学习Jquery?因为生活. 案例: <!DOCTYPE html> <html lang="zh-CN"> <h ...

  7. [web] 前端一些细节

    作者:水落斜阳链接:https://www.jianshu.com/p/7a8124fdf945来源:简书著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 1, reflow和re ...

  8. web前端----jQuery事件

    事件 常用事件 click(function(){...}) hover(function(){...}) blur(function(){...}) focus(function(){...}) c ...

  9. Web前端JQuery基础

    JQuery知识汇总 一.关于Jquery简介          jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaS ...

  10. ajaxFileUpload 报这错jQuery.handleError is not a function 博客分类: WEB前端jquery

    ajaxfileuploadhandleError  今天刚打个一个技术群,里面有人问标题上的问题,嘿,我恰好遇过,现在大家至少也在用jquery1.9以上的版本,ajaxfileupload的版本早 ...

随机推荐

  1. 关于Java 下 Snappy压缩存文件

    坑点: 压缩后的byte 数组中会有元素是负数,如果转化成String 存入文件,然后再读取解压缩还原,无法得到原来的结果,甚至是无法解压缩. 原因分析: String 底层是由char 数组构成的, ...

  2. Java的接口(interface)属性和方法的类型

    接口的属性必须是public static final Type 接口的方法必须是public abstract Type 不管你是全写,或只写部分,系统都会自动按上面的要求不全 也就是说 接口中 所 ...

  3. WCF-异步调用和两种客户端形式

    当发布一个服务端之后,客户端可以通过服务端的元数据,用VS2010添加服务引用的方式生成对应的代码.并且可以选择生成相应的异步操作. WCF实现代码,Add操作延时5秒后再返回结果. [Service ...

  4. Java CountDownLatch解析(下)

    写在前面的话 在上一篇CountDownLatch解析中,我们了解了CountDownLatch的简介.CountDownLatch实用场景.CountDownLatch实现原理中的await()方法 ...

  5. HDU-2046 骨牌铺方格【递推】

    http://acm.hdu.edu.cn/showproblem.php?pid=2046 和前面的一样,a[i] = a[i-1] + a[i-2] #include<iostream> ...

  6. js得到数组的下标值

    <script type="text/javascript"> var arr = [1,2,3,4,5,6,2,4,55]; for(var i=0; $i<a ...

  7. JS 写入到文件

    //js写文件 function doSave(value, type, name) { var blob; if (typeof window.Blob == "function" ...

  8. 基于 JWT-Auth 实现 API 验证

    基于 JWT-Auth 实现 API 验证 如果想要了解其生成Token的算法原理,请自行查阅相关资料 需要提及的几点: 使用session存在的问题: session和cookie是为了解决http ...

  9. Win10安装docker步骤

    最近使用docker部署spring boot项目,写篇文章记录下步骤. 1. 确保本机win10系统虚拟化已启动启动,否则需要去BIOS设置(方法可百度) 2. 到docker网站下载DockerT ...

  10. 前端面试题1(html)

    HTML     * Doctype作用?严格模式与混杂模式如何区分?它们有何意义? 1.<!DOCTYPE> 声明位于文档中的最前面的位置,处于 <html> 标签之前.此标 ...