01-JQuery 基础语法:

1、使用JQuery必须先导入JQuery.x.x.xjs文件。

2、JQuery中的选择器:

$(选择器).函数()

① $是JQuery的缩写,既可以使用JQuery("选择器").函数();

② 选择器,可以是任何的css支持的选择符;

3、文档就绪函数:防止在文档未完全加载完成之前,运行JQuery代码;

$(document).ready(function(){

// JQuery代码

});

简写形式:$(function(){ });

[文档就绪函数 和 window.onload区别]

① window.onload必须等到网页中的所有内容加载完成后,才会执行代码(包括图片、视频等资源)

文档就绪函数,只需要在网页DOM结构加载完毕后,就可以执行代码;

② window.onload只能写一个,写多个只会执行最后一个;

文档就绪函数,可以写多个,并且不会被覆盖。

4、原生js对象与JQuery对象:

① 使用("")选中的是JQuery对象,只能调用JQuery的函数,er不能使用元素js的事件与函数;

$("#p").click(); √

$("#p").onclick=function(){} ×

解释:$("#p")是JQuery对象, onclick是原生js事件

同理,使用document.getElement系列获取的是原生js对象,也不能使用JQuery相关对象。

② 原生js对象转为JQuery对象

可以使用$()包裹原生js对象,即可转为JQuery对象。

var p = document.getElementsByTagName("p");

$(p).click(); √ 原生js对象p已转为JQuery对象

③ JQuery对象转为原生js对象 。使用 .get(index) 或 [index]

$("#p").get(0).onclick=function(){} √

$("#p").(0).onclick=function(){} √

5、JQuery 解决多库冲突

由于其他的js库,也可以使用$作为自身标识,导致其他js库与JQuery冲突。

要解决冲突,可以放弃使用$,直接使用JQuery对象。

[使用自执行函数传入JQuery对象简化写法]

jQuery.noConflict();//调用这个函数,将$控制让给其他类库,即JQuery不能在使用$

!function(j){

//函数之中,就可以用字母j,代替JQuery对象1

}(JQuery);

02-JQueryDOM操作及其他函数

// 使用$()直接创建一个标签节点

// 将创建好的节点,插入到指定位置。

// 在#div1内部的最后,直接插入一个节点。

$("#div1").append("<p>这是被插入的p标签</p>");

// 把新节点插入到#div1中

$("<p>这是被插入的p标签</p>").appendTo("#div1");

// 在#div1内部的开头,直接插入一个节点。

$("#div1").prepend("<p>这是被插入的p标签</p>");

$("#div1").after("<p>这是被插入的p标签</p>");

$("<p>这是被插入的p标签</p>").insertBefore("#div1");

// 把每个p标签外面,都包裹一层div

$("p").wrap("<div></div>");

// 把所有的p标签,包裹在同一个div中

$("p").wrapAll("<div></div>");

// 把#div1里面的所有子元素,用<div>包裹起来

$("#div1").wrapInner("<div></div>");

// 删除元素的父标签

$("#p").unwrap();

// 将所有匹配的p标签,全部换为span标签

$("p").replaceWith("<span>111</span>");

// 用span元素,替换掉所有p标签

$("<span>111</span>").replaceAll("p");

// 删除#div1中的所有子元素。 但是#div1依然保留空标签

$("#div1").empty();

// 直接从DOM中,删除#div1以及所有子元素

$("#div1").remove();

// 直接从DOM中,删除#div1以及所有子元素

$("#div1").detach();

【remove和detach异同】

1、相同点:

① 都会把当前标签,以及当前标签的所有子节点,全部删除;

② 都可以在删除时,把当前节点返回。并可以使用变量接受返回的节点,以便后期恢复;

2、 不同点:

使用接受的节点,恢复原节点时。

remove只能恢复节点的内容,但是事件绑定,不能再恢复;

detach不但恢复节点的内容,还能再恢复 事件的绑定;

案例 ↓

$("#div1").click(function(){

  alert(1);

})

var div1 = null;

$("button:eq(0)").click(function(){

  div1 = $("#div1").remove();

})

$("button:eq(1)").click(function(){

  div1 = $("#div1").detach();

})

$("button:eq(2)").click(function(){

$("button:eq(2)").after(div1);

});

[JS中 .cloneNode() 和 JQ中 .clone() 区别]

两者都接受传入true/false的参数。

.cloneNode() 不传参数或传入参数false,表示只克隆当前节点,而不克隆子节点。 传入true表示可隆全部子节点。

.clone() 无论传入哪个参数,都会克隆所有子节点。但是,不传参数或者传入false,表示只克隆节点,不克隆节点绑定的事件。 传入true表示同时克隆及诶单绑定的事件。

/*CSS和属性相关操作*/

使用attr()设置或者取到元素的某个属性。

$("#div1").attr("class","cls1");

$("#div1").attr({    使用attr一次性设置多个属性

  "class" : "cls1",

  "name" : "name1",

  "style" : "color:red;"

});

console.log($(".p").attr("id"));

删除元素属性

$("#div1").removeAttr("class");

prop与Attr区别。

对于checked/disabled等属性名等于属性值的属性,使用prop返回的将是true或false, 使用attr返回的将是属性名或者undefined

所以,对于属性名等于属性值,或者属性是true/false的特殊属性,通常使用prop选取。 其他的属性,通常使用attr选取。

console.log($("button:eq(2)").attr("disabled"));

console.log($("button:eq(2)").prop("disabled"));

●给元素添加class属性,与attr添加class的不同是,使用addClass添加的新类名,将会保留原来已有的class名。

$("p").addClass("selected1 selected2");

●删除掉元素指定的class

$("p").removeClass("selected1");

●元素有指定class名,则删除; 元素没有指定class名,则新增。

$("p").toggleClass("selected1");

●取到或设置元素里面的html,相当于innerHTML

console.log($("#div1").html());

$("#div1").html("<h1>我是新的h1</h1>");

●取到或设置元素里面的文字内容,相当于innerText

console.log($("#div1").text());

$("#div1").text("<h1>我是新的h1</h1>");

●获取或设置 元素的Value值

console.log($("input[type='text']").val());

$("input[type='text']").val("姜浩特别帅!");

●给元素设置CSS样式属性 属于style行级样式表权限

$("#div1").css({

   "color":"red",

   "user-select":"none",

   "text-stroke":"0.5px blue"

});

var id = setInterval(function(){

$("#div1").css({

  "width":function(index,value){

  if(parseFloat(value)+10 >= 600){

  clearInterval(id);

}

return parseFloat(value)+10+"px";

}

});

},500);

●获取和设置元素的width和height属性

console.log($("#div1").height());

console.log($("#div1").width());

$("#div1").width("400px");

●获取元素的内部宽度。 包括宽高和padding

console.log($("#div1").innerHeight());

console.log($("#div1").innerWidth());

● 获取元素的外部宽高。 包括宽高+padding+border

传入参数为true时,还要包括margin

console.log($("#div1").outerHeight(true));

console.log($("#div1").outerWidth());

offset():

获取元素,相对于浏览器窗口左上角的偏移位置。

这个位置,包括margin/position等。

返回的是一个对象,包含两个属性,分别是left和top

position():

获取定位元素,相对于父元素的偏移位置(父元素必须是定位元素)。

这个位置,只包括top/left等定位属性。 而margin将被视为当前元素的一部分,并不会视为偏移量范畴。

如果父元素有定位属性。则相对于父元素padding左上角定位;

如果父元素没有定位属性,则与offerSet一样 ,相对于浏览器左上角定位(但是,只是两者的定位原点都在浏览器左上角。 在计算偏移量时,offerSet会计算margin和top. 而position只计算top)。

[绑定事件的方式]

1、事件绑定的快捷方式

缺点:绑定的事件无法取消

$("button").eq(0).click(function(){

alert("2");

});

2、使用on()绑定事件

①使用on()单事件绑定

$("button:eq(0)").on("click",function(){

  alert("1");

});

②使用on,一次性给同一节点,添加多个事件执行一个函数,多个事件之间空格分隔

$("button:eq(0)").on("click monseover dblclick",function(){

  console.log("触发了事件");

});

③使用on,一次性给同一节点添加多个事件,分别执行不同函数

$("button:eq(0)").on({

  "click":function(){

  console.log("执行click");

},

"monseover":function(){

  console.log("执行monseover");

}

});

④调用函数时,同时给函数

$("button:eq(0)").on("click",{name:"jredu",age:14},function(evn){

  console.log(evn);

  console.log(evn.data.name);

  console.log(evn.data.age);

});

⑤使用on,进行事件委派:

>>>将原本需要绑定在本元素上的事件,改为绑定到祖先节点乃至根节点上,然后委派给当前节点生效

eg:$("p").on("click",function(){});

事件委派

$("document").on("click","p",function(){});

>>>作用:

不使用事件委派的绑定方式,只能绑定到页面初始化时的标签上,当页面新增同类型标签,这些新增的标签,不能够绑定事件

但如果使用事件委派,当页面新增同类型标签时,这些新增的标签也能够绑定已有的事件

$("button:eq(0)").on("click",function(){

  $(this).after("<p>新增的p标签<p/>");

});

$("p").on("click",function(){

  alert("没有事件委派");

});

$(document).on("click","p",function(){

  alert("这是事件委派");

});

3、off()取消on事件绑定

$("p").off("click"):取消单个事件绑定;

$("p").off("click mouseover dbliclick"):取消多个事件绑定

$(document).off("click","p");:取消委派事件绑定

$("p").off();取消所有事件绑定

使用.one()绑定事件只能执行一次

$("button").one("click",function(){

  alert("生效一次");

});

.trigger()自动触发某元素的事件

第一个参数:是需要触发的事件类型

第二个参数:可选数组格式,表示传递给对应事件函数的参数

>>>传递进来的参数,可以在事件函数中,定义形参获取(形参第一个必须是event事件,从第二个开始为传递的参数。)

>>>也可以直接在函数中,使用arguments对象数组,读取参数

.triggerHandler():功能同上,区别如下:

①triggerHandler不能够触发浏览器默认的HTML事件,如submit等...

而trigger可以触发任何事件

②trigger可以触发页面中所有匹配元素的事件

而triggerHandler只能触发第一个匹配元素的事件

③trigger的返回值,返回的是调用当前函数的对象,符合JQuery的可链式语法

而triggerHandler返回的是事件函数的返回值,如果事件函数没有返回值,则范围是undefined。

$("p").on("click",function(evn,n1,n2){

  for(var i=1;i<arguments.length;i++){

  console.log(arguments[i]);

  }

  alert("这是p标签的click事件");

});

$("p").trigger("click",["lll",1,2,3,4]);

[JQuery中的动画]

.show() 让隐藏的元素显示

效果为:同时修改元素的宽度、高度、opacity属性

①不传参数:直接显示,不进行动画

②参数时间毫秒数,表示多少毫秒内完成函数

③传入(时间,函数)表示动画完成后,执行回调函数

.hide() 让显示元素隐藏,与.show()相反

.slideDown() 让隐藏的元素显示,效果为从上到下,增加高度

.slidUp() 让显示的元素隐藏,效果为从下到上,减少高度

.slidToggle() 让显示的元素隐藏,让隐藏的元素显示

.fadeOut() 让显示的元素淡出隐藏,该透明度

.fadeIn() 让隐藏的元素淡入显示

.fadeToggle() 让显示的元素淡出隐藏,让隐藏的元素淡入显示

.fadeTo(时间,最终透明度,函数) 同fadeToggle,接受第二个参数,表示最终达到的透明度

.animate({最终的样式属性,键值对对象},动画事件,动画效果("linear"或"swing"),动画执行完后的回调函数)

自定义动画函数注意事项:

①参数一的对象中,键必须使用驼峰命名法。(fontSize : "18px")

②只有数值类型的属性能够使用动画,非数值类型属性不能应用动画。

JQuery 相关用法和操作的更多相关文章

  1. Jquery:jquery中的DOM操作<一>

    之前两天学习了Jquery强大的选择器,今天学习了一部分Jquery对DOM的操作,下面我将把自己今天的成果分享给大家,那些菜鸟们,你们是否需要巩固之前所学? 首先需要知道,DOM操作分为3个方面:D ...

  2. 【Java EE 学习 33 上】【JQuery样式操作】【JQuery中的Ajax操作】【JQuery中的XML操作】

    一.JQuery中样式的操作 1.给id=mover的div采用属性增加样式.one $("#b1").click(function(){ $("#mover" ...

  3. jQuery选择器和DOM操作——《锋利的jQuery》(第2版)读书笔记1

    第1章 认识jQuery jQuery有以下优势: 轻量级: 强大的选择器: 出色的DOM操作的封装: 可靠的事件处理机制: 完善的Ajax: 不污染顶级变量: 出色的浏览器兼容性: 链式操作方式: ...

  4. dom core,html dom,css dom,jquery 中的dom操作

    前端开发中为达到某种目的,往往有很多方法:dom core,html dom,jquery; dom core/jquery主要通过函数调用的方式(getAttribute("属性名&quo ...

  5. jQuery中的模拟操作

    jQuery中的模拟操作主要是通过trigger来触发,相当于页面加载完成后不需要用户点击按钮,就可以自动触发页面中的相关事件. trigger(type,[data])可以用来模拟触发自定义事件的触 ...

  6. jQuery.extend()方法和jQuery.fn.extend()方法

    jQuery.extend()方法和jQuery.fn.extend()方法源码分析 这两个方法用的是相同的代码,一个用于给jQuery对象或者普通对象合并属性和方法一个是针对jQuery对象的实例, ...

  7. python全栈开发day48-jqurey自定义动画,jQuery属性操作,jQuery的文档操作,jQuery中的ajax

    一.昨日内容回顾 1.jQuery初识 1).使用jQuery而非JS的六大理由 2).jQuery对象和js对象转换 3).jQuery的两大特点 4).jQuery的入口函数三大写法 5).jQu ...

  8. jQuery相关知识总结

    1 encodeURIComponent(city)处理js传值乱码问题 2 总体概述 以后项目如果没有特殊情况,一般采用jQuery作为最基础的公共底层库. 另外对于前端的javascript相关的 ...

  9. 锋利的jQuery ——jQuery中的DOM操作(三)

    一.DOM的操作分类 1>DOM Core   2>HTML-DOM   3>CSS-DOM 二.jQuery中的DOM操作 DOM树 ①查找节点 1)查找元素节点 利用jQuery ...

随机推荐

  1. Java获取指定时间的毫秒值的方法

    有以下两种方法获取指定时间的毫秒值: 1.Calendar类 先由getInstance获取Calendar对象,然后用clear方法将时间重置为(1970.1.1 00:00:00),接下来用set ...

  2. fiddler - 测试手机端软件

    在执行"Web测试"的时候,需要在PC配置HOSTS,那么当我们在执行"手机端测试"的时候需要如何配置HOSTS呢? iOS越狱后可以配置HOSTS,不过可能会引入bugs: Android使用ROO ...

  3. 《Python学习手册》读书笔记【转载】

    转载:http://www.cnblogs.com/wuyuegb2312/archive/2013/02/26/2910908.html 之前为了编写一个svm分词的程序而简单学了下Python,觉 ...

  4. Python 第八天

    文章读写 读写文章是最常见的 IO 操作. 读 1.Python 中内置了open()函数,read()方法以及close()方法来打开文件 fi = open('test.html','r') co ...

  5. SpringMVC注解@RequestMapping之produces属性导致的406错误

    废话不多说,各位,直接看图说话,敢吗?这个问题网上解决的办法写的狠是粗糙,甚至说这次我干掉它完全是靠巧合,但是也不否认网上针对406错误给出的解决方式,可能是多种情况下出现的406吧?我这次的流程就是 ...

  6. C++中printf和scanf的用法

    (一)printf的用法 printf:按格式打印,向控制台输出.print:打印 ,f:formate,格式化. 在使用printf向控制台输出时,不建议使用中文字符串,中文字符串的问题比较复杂,有 ...

  7. js获取select下拉框选中的的值和判断checkbox是否选中状态

    html: <select id="lib_select"  name="">   <option   value="1" ...

  8. Struts2学习笔记(四)——result结果类型

    当Action类的方法处理请求后,会返回一个字符串(逻辑视图名),框架根据这个结果码选择对应的result,向用户输出,所以需要在struts.xml提供<result>元素定义结果页面, ...

  9. Centos 开机后,登录时无法输入密码怎么解决

    Centos 开机无法输入密码怎么解决... ========================= Q:centos启动后,输入登入账号,再输密码就输不进去了,打什么字都没有用... A:输入密码是不显 ...

  10. 进入子shell的各种情况分析

    子shell的概念贯穿整个shell,写shell脚本时更是不可不知.所谓子shell,即从当前shell环境新开一个shell环境,这个新开的shell环境就称为子shell(subshell),而 ...