前阵子买了一批书,就从锋利的jQuery看起吧,书中一些太过常规以及没有强记必要性的操作就不记录了。

1.DOM加载后执行JS

  1. $(document).ready(function(){
  2. //......
  3. })
  4.  
  5. //简写
  6. $(function(){
  7. //......
  8. })

特点:网页中所有DOM结构绘制完成后就执行,可能DOM元素关联的东西并没有加载完,可以同时编写多个

  1. window.onload = function(){
  2. //......
  3. }

特点:必须等待网页中所有内容(包括图片)加载完毕之后才能执行,如果编写多个该语句,只会执行最后一个

2.jQuery代码风格

2.1链式风格

链式风格实际上就是对当前对象执行完操作之后,返回该对象,在jQuery里就是$(this)了。

2.2为代码添加注释

其实,不仅仅是jQuery,为代码添加注释,应该是每个程序员都应该养成的好习惯之一,有利于提高开发效率,尤

其是多人协作的时候。

3.DOM对象和jQuery对象

在此之前,我一直对DOM对象和jQuery对象不是很明白,总会犯一些在DOM对象上执行jQuery操作的错误。

DOM对象实际上就是通过原生js获得的对象,当然也是可以对其使用原生js进行操作:

  1. var obj = document.getElementById("id");
  2. var objHtml = obj.innerHtml;

jQuery对象就是通过jQuery包装DOM对象后产生的对象,当然也就可以对其使用jQuery的方法了:

  1. var objHtml = $("#id").html;

注意:此方法获取到的永远是对象,哪怕网页上没有这个元素!!!所以要判断网页上有没有这个元素,要将其转为DOM对象

jQuery对象转DOM对象:

  1. var obj = $("#id");
  2. var dom = obj[];
  3. 或者
  4. var dom = obj.get();

DOM对象转jQuery对象:

  1. var dom = document.getElementById("id");
  2. var obj = $(dom);

4.jQuery获取元素

对网页中的元素绑定事件,有多种方式,例如:

  1. //第一种
  2. <p onclick="demo();">点击我</p>
  3. <script type="text/javascript">
  4. function demo(){
  5. alert('Hello World');
  6. }
  7. </script>
  8.  
  9. //第二种
  10. <p class="demo">点击我</p>
  11. <script type="text/javascript">
  12. $(".dmeo").click(function(){
  13. alert('Hello World');
  14. })
  15. </script>

jQuery建议我们采用第二种,因为他体现了内容和行为相分离的思想。

  1. <script type="text/javascript">
  2. document.getElementById("id").style.color="red";
  3. </script>
  4. //上面的写法如果该元素不存在浏览器就会报错,所以改进
  5. <script type="text/javascript">
  6. if(document.getElementById("id")){
  7. document.getElementById("id").style.color="red";
  8. }
  9. </script>

显然,如果元素多的话,每次都要判断很是麻烦,于是:

  1. <script type="text/javascript">
  2. $("#id").css("color","red");
  3. </script>

5.jQueryCSS选择器

这里就不详细说明了,详细说的话难免显得啰嗦,那就记一下css选择器属性值操作的一些问题吧:

  1. //对于要改变写在style里的样式
  2. <style>
  3. #id{
  4. color:red;
  5. }
  6. </style>
  7. <script type="text/javascript">
  8. $("#id").css("color","green");
  9. </script>
  10.  
  11. //对于要改变写在行间里的属性
  12. <p id="id" title="点击我">Hello World</p>
  13. <script type="text/javascript">
  14. $("#id").attr("title","就不点");
  15. </script>
  16.  
  17. //对于要改变写在行间里的style属性
  18. <p id="id" style="color:red;">Hello World</p>
  19. <script type="text/javascript">
  20. $("#id").attr("style","color:green");
  21. </script>

 6.表单选择器

  1. $(":input")-----------------所有的inputtextareaselectbutton
  2. $(":text")------------------所有的单行文本框
  3. $(":password")--------------所有的密码框
  4. $(":radio")-----------------所有的单选框
  5. $(":checkbox")--------------所有的多选框
  6. $(":submit")----------------所有的提交按钮
  7. $(":button")----------------所有的按钮
  8. $(":file")------------------所有的上传域
  9. $(":hidden")----------------所有的不可见域

 7.DOM操作

这块没什么好讲的,一些常规操作,DOM元素的增删改查取值等等,用的时候直接查吧。

8.事件(解除)绑定

通过bind()函数来为DOM元素绑定事件,例如:

  1. $("DOM").bind("click",function(){
  2. ......
  3. })

解除绑定如下:

  1. $("DOM").unbind("click");

常见的事件有如下:

blur、focus、load、resize、scroll、unload、click、dbclick、mousedown、mouseup、mousemove、mouseover、mouseout、mouseenter、mouseleave、change、select、submit、keydown、keypress、keyup、error...

合成事件:hover()、toggle()。

  1. $("DOM").hover(function(){
  2.   ...enter
  3. },function(){
  4.   ...leave
  5. });

9.自定义事件

  1. $("DOM_cur").bind("eco",function(){
  2. .......dosomething
  3. })

上面为DOM元素绑定了一个自定义事件,下面就是触发该事件

  1. $("DOM_cur").trigger("eco");

trigger传参:

  1. $("DOM_cur").trigger("eco",["arg1","arg2"]);

触发自定义事件之后,后执行该元素的浏览器默认事件,如果想要禁止:

  1. $("DOM_cur").triggerHandler("focus");

10.事件的命名空间

  1. //DOM绑定3个事件
  2. $("DOM").bind("click1.plugin",function(){});
  3. $("DOM").bind("click2.plugin",function(){});
  4. $("DOM").bind("click3",function(){});
  5. //解绑plugin空间下的所有事件
  6. $("DOM").unbind(".plugin");

同名事件,不同命名空间:

  1. //两个click事件
  2. $("DOM").bind("click.plugin",function(){});
  3. $("DOM").bind("click.core",function(){});
  4. $("DOM").bind("click",function(){});
  5. //触发不在命名空间中的事件(注意感叹号)
  6. $("DOM").trigger("click!");
  7. //触发所有事件
  8. $("DOM").trigger("click");

11.事件对象event

jQuery封装了事件对象event(由于IE-DOM和标准DOM的不同,原生事件对象event=event || window.event)

事件对象,我一直以来就把他记作执行某个事件操作载体,比如A元素的单击事件中,鼠标就是事件对象。

事件对象的用处之一就是阻止事件冒泡:

  1. $("DOM").bind("click",function(event){
  2.   ...dosomething
  3.   event.stopPropagation();
  4. })

阻止默认行为(表单提交按钮的“提交”):

  1. $(".submit").bind("click",function(event){
  2.   ...something
  3.   event.preventDefault();
  4. })

如果想同时实现以上两种功能,可以在函数最后,将事件的处理改成:return  false。

补充:事件冒泡是由里向外,二事件捕获是由外向里。

除了以上两个属性,事件对象还有以下属性:

  1. event.type------------------------单击事件的事件类型就是单击
  2. event.target----------------------点击a链接事件的事件目标就是a元素
  3. event.pageX-----------------------光标相对于页面的X坐标
  4. event.clientX---------------------同上,不同浏览器不同写法
  5. event.which-----------------------单击时获取鼠标的左中右(,,)
  6. event.metaKey---------------------规定为键盘中获取ctrl

《锋利的jQuery》读书笔记(DOM+事件)的更多相关文章

  1. 锋利的jQuery读书笔记---jQuery中操作DOM

    一般来说,DOM的操作分为3个方面,即DOM Core.HTML-DOM和CSS-DOM jQuery中的DOM操作主要包括以下种类: 查找节点 查找元素节点 查找属性节点 创建节点 创建元素节点 创 ...

  2. 锋利的jQuery读书笔记---选择器

    前段时间入手了锋利的jQuery(第二版),想着加强下自己的js能力,可前段时间一只在熟悉Spring和Hibernate.最近抽时间开始读这本书了,随便也做了些记录. 读书的过程是边看边代码测试,所 ...

  3. 锋利的jQuery读书笔记---jQuery中Ajax--序列化元素、Ajax全局事件

    serialize()方法: 作用于一个jQuery对象,它能够将DOM元素内容序列化为字符串,用于Ajax请求. <!DOCTYPE html> <html> <hea ...

  4. 锋利的jQuery读书笔记---jQuery中的事件

    jQuery中的事件: 1.加载DOM:注意window.onload和$(document).ready()的不同 2.事件绑定 3.合成事件 --2和3的详细信息见代码- <!DOCTYPE ...

  5. 锋利的jQuery读书笔记---jQuery中Ajax--get、post等方法

    load()方法通常用来从Web服务器上获取静态的数据文件,然而这并不能体现ajax的全部价值. 在项目中,如果需要传递一些参数给服务器中的页面,那么可以使用$.get()或者$.post()方法(或 ...

  6. 锋利的jQuery读书笔记---jQuery中动画

    jQuery中的动画: 1.show和hide 2.fadeIn和fadeOut 3.slideUp和slideDown <!DOCTYPE html> <html> < ...

  7. 锋利的jQuery读书笔记---jQuery中Ajax--load方法

    第一个Ajax例子 <!DOCTYPE html> <html> <head lang="en"> <meta charset=" ...

  8. <锋利的jQuery>读书笔记

  9. jQuery:自学笔记(4)——事件与事件对象

    jQuery:自学笔记(4)——事件与事件对象 jQuery中的事件 什么是事件 所谓事件,就是被对象识别的操作,即操作对象队环境变化的感知和反应,例如单击按钮或者敲击键盘上的按键. 所谓事件流,是指 ...

  10. Javascript & JQuery读书笔记

    Hi All, 分享一下我学JS & JQuery的读书笔记: JS的3个不足:复杂的文档对象模型(DOM),不一致的浏览器的实现和便捷的开发,调试工具的缺乏. Jquery的选择器 a. 基 ...

随机推荐

  1. 批量编译目录下文件的Makefile

    1.多C文件生成各自可执行文件的Makefile如果一个目录下有很多C文件,且每个C文件都能生成一个独立的可执行文件,那么想全编译这些C文件并生成各作的可执行文件,在该目录下编写一个Makefile文 ...

  2. 类型“Microsoft.Office.Interop.Word.ApplicationClass”未定义构造函数

    错误 4317 无法嵌入互操作类型“Microsoft.Office.Interop.Word.ApplicationClass”.请改用适用的接口. 类型“Microsoft.Office.Inte ...

  3. TCP三次“握手”与4次“挥手”

    OSI(Open System Interconnection,开放系统互联)七层网络模型成为开放式系统互联参考模型,是一个把网络通信在逻辑上的定义,也可以理解成为定义了通用的网络通信规范.而我们的数 ...

  4. html 基础 超链接

    ***设置超链接的样式示例  a:link 超链接被点前状态 a:visited 超链接点击后状态 a:hover 悬停在超链接时 a:active 点击超链接时 在定义这些状态时,有一个顺序l v ...

  5. 参考MongoRepository,为接口生成bean实现注入

    首先弄个注解,给代码个入口,这个就是mongo的@EnableMongoRepositories了. @Target(ElementType.TYPE) @Retention(RetentionPol ...

  6. 【c++习题】【17/4/16】动态分配内存

    #include<iostream> #include<cstring> #define N 100 using namespace std; class String{ pu ...

  7. 20165101 实验二 Java面向对象程序设计

    20165101 实验二 Java面向对象程序设计

  8. mac下Appium环境配置

    一.Appium环境搭建 1.xcode(需要OS X版本支持): 下载对应版本的xcode(支持对应手机系统),解压,拖入应用程序. xcode下载地址:https://developer.appl ...

  9. Mac 使用技巧分享

    1. 快捷键开启speech功能: System Preferences -> Ditaction&Speech ->Text to Speech ->Select 'Spe ...

  10. windchill相关功能操作

    1.创建产品   2.创建文件夹   3.创建文档   4.创建用户账号   5.创建组   6.创建更改请求   7.创建部件新视图版本   8.创建可重用属性和全局枚举   9.在组织内分配上下文 ...