2022年3月的主要学习内容之一——简化js操作的函数库jQuery

关于jq,可以理解为另一种JavaScript的写法,是用更少的语言实现更多的功能。它大大简化了JavaScript原生代码的繁琐程度(如链式),当然虽然刚开始用可能很不习惯,但它确实让代码行数明显减少了

关于jQuery

1.jQuery核心代码$

实际上jquery是一个工具库,其中包含已经封装好的方法。其核心代码为$以及$()所调用的各类方法

var $obj = $(选择器)

$obj 是jquery对象(实例)

jQuery对象并不直接指向页面元素,用 console.log($obj)测试发现,他返回的是一个伪数组,这里就是他与原生代码 var ele = document.querySelector(选择器)的不同。

// 总结:

    // 原生dom对象就是个标签元素,不能直接调用jquery对象的方法

    // jquery对象不能直接操作原生dom对象的属性和方法

    // 如何js和jq混在一起操作页面元素,就需要dom对象和jquery对象转换

p.s.这里补充一下,应该还有个入口函数的问题。但归纳以后好像有点多,所以放个链接在这里,比较详细。

入口函数精简介绍


2.添加元素、删除元素、设置文本、设置样式、设置属性

添加元素

原生代码:Element.appendChild("")

jq代码:

在容器元素的最后的索引位置 添加元素 (父子关系)

$().append("")

在容器元素的索引为0的位置 添加元素(父子关系)

$().prepend("")

在当前的元素之前插入元素(兄弟关系)

$().before("")

在当前的元素之后插入元素(兄弟关系)

$().after("")

删除元素

原生代码:Element.removeChild("")

jq代码:

删除当前元素

$().remove("")

清空元素内容

$().empty("")

【这里也可以用$().html("")将内容设置为空】

设置元素内容

原生代码:

Element.innerHtml("")

Element.innerText("")

Element.style.样式

jq代码:

$().text()

$().html()

$().val()    设置或返回表单字段的值

$obj.css(属性名称,属性值)

$obj.css(属性对象)

例如:

$(".demo-5").css({

  width: 200,

  height: 80,

  backgroundColor: "green"

})

设置属性

原生代码:Element.setAttribute(attribute,value)

jq代码:$().attr()

例如:

// 设置元素的属性( src alt class id href ...)

var src = $("#layout img").attr("src");//获取src属性

console.log(src);

$("#layout img").attr("src","./imgs/2.png");//设置src属性

// $("#layout img").removeAttr("src");//删除src属性

设置多属性

$("button").click(function(){ $("#w3s").attr({ "href" : "http://www.w3school.com.cn/jquery", "title" : "W3School jQuery Tutorial" });});

控制类名

原生代码:

Element.className

Element.classList【其中有.add/.remove/.contains/.toggle】

jq代码:

$().addClass()

.removeClass()

.toggleClass()

.hasClass()

获取指定页面元素

原生代码:

...(这里实在有点多,因为又有父元素的代码如parentElement,又有父节点的代码parentNode,懒癌如我就不写了,详细翻拒绝摆烂第七天的代码)

jq代码:

获取页面所有某元素如container下的按钮

$("#container button")

eq()方法 获取页面第二个按钮

$("#container button").eq(2)

children()  获取#container子元素

$("#container").children()

parent()  获取section标签的父元素

$("section").parent()

prev()  获取当前标签的上一个元素

$("#container .btn-3").prev()

next()  获取当前标签的下一个元素

$("#container .btn-3").next()

获取兄弟元素(除了自身以外)

$("#container .btn-3").siblings(选择器)

获取容器标签的指定的后代元素

$("#container").find(选择器)



3.事件绑定和事件对象

怎么说呢,我的建议是不用记事件绑定,因为和原生代码差不多。但是呢,关于事件对象还是要明白是什么。 事件对象是事件触发时 产生的数据集合。在这个集合中可以获取关于当前事件的信息。(状态、位置、方法)

bind() 方法

这里还是写一下普通情况的绑定做对比:

代码1

// 绑定事件

// $(".btn-1").click(function(){

//     console.log("触发点击事件")

// })

代码2

bind 绑定事件(可以绑定多个事件)

// $obj.bind(参数1,参数2)

// $(".btn-1").bind("click mouseenter mouseleave",function(event){

//     // 获取事件类型

//     var _type = event.handleObj.origType;

//     console.log("触发事件类型:",_type);

// })

delegate() 方法

delegate: 委托

该方法用于事件委托,给祖先元素或父元素绑定事件,从而让所有的后代元素都绑定事件。

// $obj.delegate(参数1,参数2,参数3)

// $obj.delegate(选择器,事件类型,回调函数)

$(".container").delegate("button","click",function(){

    // 该方法直接可以通过this获取事件源

    console.log(this);//事件源

})

on() 方法

别问,问就是用on。该方法集以上两种方法为一体,总之就是直接用就行了好吧。

// 代码一、

// $("button").on('click mouseenter mouseleave',function(event){

//     console.log("事件触发了",event.handleObj.origType);

// })

// 代码二、

// $obj.on(参数1,参数2,参数3)

// 参数1:事件类型 ,参数2:选择器,参数3:回调函数

$(".box").on("click","button",function(){

    console.log(this);

})



4.动画函数

这里就不写js的原生代码了,这里需要注意的是,以下所有代码都是通过js来实现的。具体实现有空我会整理出来

元素的显示与隐藏()

直接隐藏显示(脱离文档流)

$dom.show()

$dom.hide()

$dom.toggle()

淡入淡出(脱离文档流)

$dom.fadeIn()

$dom.fadeOut()

$dom.fadeToggle()

下拉收起(脱离文档流)

$dom.slideDown()

$dom.slideUp()

$dom.slideToggle()

然后千呼万唤使出来的函数动画:

//动画函数

$dom.animate()

这里代码粘贴直接乱码?所以用图片吧



5.遍历函数

each() 方法

// each()

// 第一种写法:

// index: 代表索引值

// dom: 代表dom元素

// 作用:循环标签数组

// 调用者: $(".btn")  jquery对象

// $(".btn").each(function(index,dom){

//     // console.log(dom);

//     dom.style.backgroundColor = "red";

//     dom.style.color = "white";

// })

// 第二种写法:

// 普通数组

var arr = ["red","green","blue","purple","yellow"];

// 作用:循环任意数组

// 调用者: $  jquery函数

$.each(arr,function(index,item){

    // console.log(index,item);

    $(".btn").eq(index).css("backgroundColor",item);

})



6.关于jq拓展的方法

这里就像在原型上挂自定义方法一样,jq作为一个函数库,一样可以在jq对象或者函数本身上挂自定义方法,区别就是调用者不同。

// 调用者:jquery对象

// 拓展一个bgcolor方法,专门改变元素背景色

// $(".box").bgcolor("red")

// $.fn.extend({

//     bgcolor: function(bgc){

//         $(this).css("backgroundColor",bgc);

//     }

// })

// $(".box-1").bgcolor("red");


$.fn.bgcolor = function (bgc) {

    // $(this) 是这个方法的调用者

    $(this).css("backgroundColor", bgc);

}

// 分别改变了以下div的背景色

$(".box-1").bgcolor("green");

$(".box-2").bgcolor("orange"); 

$(".box-3").bgcolor("purple");

// 调用者:$函数

        // 拓展getRandom方法,获取随机数

        // 一种写法:

        // $.extend({

        //     getRandom: function(min,max){

        //         return Math.floor(Math.random()*(max-min)+min);

        //     }

        // })

        // console.log($.getRandom(50,80));

        // 换种写法:

        $.getRandom =  function(min,max){

            return Math.floor(Math.random()*(max-min)+min)

        }

         console.log($.getRandom(50,80));

这里有两个案例,分别为满屏滚动插件的封装和瀑布流的封装,这里暂且不写,会专门额外写一篇文章介绍

另外再分享一首歌《终章》--Assen捷&橙翼

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容