jQuery官网:https://jquery.com/
jQuery是一个高效、轻量并且功能丰富的js库。
核心在于查询query。
jQuery是一个优秀的js函数库,是React/Vue/Angular框架之外中大型项目的首选。
jQuery的主旨是write less, do more。
引入jQuery的方式有2种,一种是项目中直接引入jQuery的min.js文件,一种是使用服务器端jQuery文件(使用cdn)脚本标签方式引入。
在官网的:https://jquery.com/download/ 链接下可以下载到完整的代码,放到项目文件的js文件夹下。
<script src="static/js/jquery-3.7.1.min.js"></script>
在网站:https://www.bootcdn.cn/ 可以获得稳定、快速、免费的cdn加速服务。
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script>
开发过程中一般使用非min.js文件方便调试,生产环境部署上线时才使用min.js这种压缩文件。
从源码中可以看出,jQuery的整体逻辑可以用以下简单的结构进行描述:
( function( global, factory ) {
// 判断有无window环境的一堆逻辑代码
})( typeof window !=="undefined" ? window : this, function( window, noGlobal ) {
// 构造jQuery的一些逻辑代码
return jQuery
});
从源码中可以看出,jQuery被定义为一个函数,函数中返回了一个实例对象(看new关键字)。
继续跟踪源码 new jQuery.fn.init( selector, context),这个函数中调用了makeArray,当然在其他if判断语句中也有返回伪数组对象(比如,定义了length字段,还有[0]的操作),这里拿makeArray作为演示。
查看makeArray函数:
所以这个返回实例对象,是一个伪数组。
$('#menu-trigger') instanceof Array // false
$('#menu-trigger') instanceof Object // true
从源码中可以看出,将jQuery函数和window.$ 以及window.jQuery绑定赋值,所以使用jQuery和$ 标识符就可以直接使用jQuery。通常在项目中直接使用$标识符,快捷简省。
所以在引入jQuery的项目中:
console.log(typeof $); // function
console.log($===jQuery); // true
console.log($() instanceof Object); // true
通常形式为:$(param)
$(function() {
console.log("dom finished and execute this");
})
$('#btn').click(function () {
// 这里的this是id为#btn的dom元素
console.log(this.innerHTML)
console.log($(this).html())
})
$('<input type="number"></input>').appendTo('div')
let list=[1, 2, 3]
$.each(list, function(i, ele) {
console.log(i, ele)
})
$.trim(' hello world ')
// class中名为btn的dom元素有多少
$('.btn').length
$('.btn')[0]
$('.btn').get(0)
$('.btn').index()
// 设置名为btn的class对应的dom标签的文本内容
$('.btn').text('自定义文本内容')
通过$(param)传入的是selector、element、标签情况下,返回的是包含1个或者多个dom元素对象的伪数组。
// 基础标签和class
// 选择了所有的div和span标签
$('div, span')
// 选择所有具有某个class的标签
$('div.container')
// 层次选择器
$('ul span') // ul标签下的所有span元素
$('ul>span') // ul标签下的所有子span元素
$('.container+li') // class为container的元素后的下一个li元素
$('ul .item~*') // class为item的元素后面所有兄弟元素
// 过滤选择器
$('div:first') // 选择第一个div
$('div:last') // 最后一个div
$('div:not(.container)') // class不为container的所有div
$('div:lt(3):gt(0)') // 所有div元素中的大于0小于3的div元素,表示1和2索引处的dom元素
$('div:containers("hello world")') // 内容为hellow world的div元素
$('div:hidden') // style中display: none的div元素
$('div[data]') // 有data属性的div元素, example: <div data=""></div>
$('div[data="123"]') // 有data属性且值为123的div元素, example: <div data="123"></div>
// 示例,使table表格的奇数行背景样式设置
$('table>tbody>tr:odd')
// form表单中
$(':text') // 所有单行输入框
$(':text:disabled') // 所有disabled的input输入框
$(':checkbox') // 所有checkbox
$(':checkbox:checked') // 所有选中的checkbox
$('select').val() // select标签选中的option的value值
直接修改css属性(如果其dom标签存在这个css属性)
$('#container').css('background', 'red');
$('#container').css({ 'background' : 'red', 'color': 'blue' }) // 一组属性
清空某标签下的所有dom:
$('.carousel-inner').empty();
给某标签下添加dom标签:
$('.carousel-inner').append(domStr);
移除、添加class:
$('.carousel-indicators li').removeClass('active');
$('.carousel-indicators li:first').addClass('active');
获取dom标签上的属性:
$('.about-img-1>img').attr('src');
设置标签的属性:
$('.about-img-1>img').attr('src', (data && data['image']) ? data['image'] : '');
点击:
$('.category-product-page-ul>li').click(function(e) {
e.preventDefault();
console.log('this is:', this); // 打印对应的dom标签
});
hover:
$('#container').hover(
function() {
// 当鼠标进入元素时执行的函数
},
function() {
// 当鼠标离开元素时执行的函数
}
);
监听事件:
$('.bigImage').on("mousemove", function( e ) {
// do something
});
const json='/static/js/data/xxx.json';
$.ajax({
url: json,
dataType: 'json',
success: function(data) {
// do something
},
error: function(jqXHR, textStatus, errorThrown) {
console.error('Fail to read json:', textStatus, errorThrown, json);
}
});
post请求:
过 jQuery,可以很容易地添加新元素/内容。
添加新的 HTML 内容
我们将学习用于添加新内容的四个 jQuery 方法:
append() - 在被选元素的结尾插入内容
prepend() - 在被选元素的开头插入内容
after() - 在被选元素之后插入内容
before() - 在被选元素之前插入内容
jQuery append() 方法
jQuery append() 方法在被选元素的结尾插入内容。
实例
$("p").append("追加文本");
jQuery prepend() 方法
jQuery prepend() 方法在被选元素的开头插入内容。
实例
$("p").prepend("在开头追加文本");
通过 append() 和 prepend() 方法添加若干新元素
在上面的例子中,我们只在被选元素的开头/结尾插入文本/HTML。
不过,append() 和 prepend() 方法能够通过参数接收无限数量的新元素。可以通过 jQuery 来生成文本/HTML(就像上面的例子那样),或者通过 JavaScript 代码和 DOM 元素。
在下面的例子中,我们创建若干个新元素。这些元素可以通过 text/HTML、jQuery 或者 JavaScript/DOM 来创建。然后我们通过 append() 方法把这些新元素追加到文本中(对 prepend() 同样有效):
实例
functionappendText(){vartxt1="<p>文本。</p>"; // 使用 HTML 标签创建文本vartxt2=$("<p></p>").text("文本。"); // 使用 jQuery 创建文本vartxt3=document.createElement("p"); txt3.innerHTML="文本。"; // 使用 DOM 创建文本 text with DOM $("body").append(txt1,txt2,txt3); // 追加新元素}
jQuery after() 和 before() 方法
jQuery after() 方法在被选元素之后插入内容。
jQuery before() 方法在被选元素之前插入内容。
实例
$("img").after("在后面添加文本"); $("img").before("在前面添加文本");
通过 after() 和 before() 方法添加若干新元素
after() 和 before() 方法能够通过参数接收无限数量的新元素。可以通过 text/HTML、jQuery 或者 JavaScript/DOM 来创建新元素。
在下面的例子中,我们创建若干新元素。这些元素可以通过 text/HTML、jQuery 或者 JavaScript/DOM 来创建。然后我们通过 after() 方法把这些新元素插到文本中(对 before() 同样有效):
实例
functionafterText(){vartxt1="<b>I </b>"; // 使用 HTML 创建元素vartxt2=$("<i></i>").text("love "); // 使用 jQuery 创建元素vartxt3=document.createElement("big"); // 使用 DOM 创建元素txt3.innerHTML="jQuery!"; $("img").after(txt1,txt2,txt3); // 在图片后添加文本}
如您还有不明白的可以在下面与我留言或是与我探讨QQ群308855039,我们一起飞!
query 中有很多种追加元素的方法,今天就介绍几种最常用的,做个笔记,记录一下。
append():方法可以在被选元素的内部的结尾处插入内容
语法:
$(selector).append(content)
例:jq在元素内部的结尾处追加元素
代码:
<!DOCTYPE html> <html> <head> <script src="https://cdn.staticfile.org/jquery/2.2.4/jquery.min.js" type="text/javascript"></script> </head> <body> <div id="mochu"> <div>我是原来的内容</div> <div>飞鸟慕鱼博客</div> </div> <script> $('#mochu').append('<p>我要是插入的内容</p>'); </script> </body> </html>
代码运行结果,如下图
注:
1、如果使用JS动态修改HTML元素后,只能在浏览器的控制台中查看
2、查看方法:浏览器 按 F12
jQuery prepend():方法在被选元素内部的起始位置插入内容
语法:
$(selector).prepend(content)
例:JQ在元素内部的开始位置追加HTML元素
代码:
<!DOCTYPE html> <html> <head> <script src="https://cdn.staticfile.org/jquery/2.2.4/jquery.min.js" type="text/javascript"></script> </head> <body> <div id="mochu"> <div>我是原来的内容</div> <div>飞鸟慕鱼博客</div> </div> <script> $('#mochu').prepend('<p>我是利用prepend方法插入的内容</p>'); </script> </body> </html>
运行结果如下图:
jQuery before():方法在被选元素的前面插入元素,形成兄弟节点
语法:
$(selector).before(content)
例:jq在指定元素前面追加内容
代码:
<!DOCTYPE html> <html> <head> <script src="https://cdn.staticfile.org/jquery/2.2.4/jquery.min.js" type="text/javascript"></script> </head> <body> <div id="mochu"> <div>我是原来的内容</div> <div>飞鸟慕鱼博客</div> </div> <script> $('#mochu').before('<p>我是利用before方法插入的内容</p>'); </script> </body> </html>
代码运行结果:
*请认真填写需求信息,我们会在24小时内与您取得联系。