JQuery 相关用法和操作

Posted Mr.TongYu、

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JQuery 相关用法和操作相关的知识,希望对你有一定的参考价值。

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 相关用法和操作的主要内容,如果未能解决你的问题,请参考以下文章

JQuery用法之-选择器

jQuery 事件用法详解

jQuery 事件用法详解

jQuery 事件用法详解

Jquery中emptyremovedetach用法

jquery中cookie用法实例详解(获取,存储,删除等)