jQuery是一款优秀的 JavaScript 库,从命名可以看出 jquery 最主要的用途是用来做查询( jQuery = js + Query),正如 jQuery 官方 Logo 副标题所说(write less, do more)使用 jQuery 能让我们对 HTML 文档遍历和操作,事件处理,动画以及 Ajax 变得更加简单
原生 JS 设置背景
window.onload = function (ev) {
// 1.利用原生的JS查找DOM元素
var div1 = document.getElementsByTagName("div")[0];
var div2 = document.getElementsByClassName("box1")[0];
var div3 = document.getElementById("box2");
// 2.利用原生的JS修改背景颜色
div1.style.backgroundColor = "red";
div2.style.backgroundColor = "blue";
div3.style.backgroundColor = "yellow";
}
$(document).ready(function(){
// 查询,操作 CSS 一步到位
$("div").eq(0).css('background','red');
$(".one").eq(0).css('background','blue');
$("#two").css('background','yellow');
});
<script>
// 1.原生JavaScript
var div = document.getElementsByTagName("div");
// 报错,必须分开写
div[0].style.backgroundColor = "red".width = 200+"px";
// div[0].style.width = 200+"px";
// 2.jQuery
$(document).ready(function () {
// 不报错,后面还可以接着继续写
$("div").eq(1).css('background', 'yellow').css('width', '200px');
});
script>
<script>
// 1.原生JavaScript
var div = document.getElementsByTagName("div");
// div.style.backgroundColor = "red";// 无效
for(var i = 0; i<div.length; i++){
div[i].style.backgroundColor = "red";
}
// 2.jQuery
$(document).ready(function () {
// 隐式遍历(迭代)找到的所有div
$("div").css('background', 'yellow');
});
script>
<script>
$(document).ready(function () {
// 读取数据
var $tx = $("div").eq(0).text();
alert($tx);
// 写入数据
$("div").eq(0).text("新的数据");
});
script>
// js 原生入口函数
window.onload = function (ev) {
// 1.通过原生的JS入口函数可以拿到DOM元素
var images = document.getElementsByTagName("images")[0];
// 2.通过原生的JS入口函数可以拿到DOM元素的宽高
var width = window.getComputedStyle(images).width;
}
// jQuery 入口函数
$(document).ready(function () {
// 1.通过jQuery入口函数可以拿到DOM元素
var $images = $("images");
// 2.通过jQuery入口函数不可以拿到DOM元素的宽高
var $width = $images.width();
});
// 原生 js
window.onload = function (ev) {
alert("hello lnj1");// 不会显示
}
window.onload = function (ev) {
alert("hello lnj2");// 会显示
}
// jQuery
$(document).ready(function () {
alert("hello lnj1");// 会显示
});
$(document).ready(function () {
alert("hello lnj2");// 会显示
});
window.jQuery = window.$ = jQuery;
总结:
window.onload | $(document).ready() | |
---|---|---|
执行时机 | 必须等待网页全部加载完毕(包括 图片等),然后再执行包裹代码 | 只需要等待网页中的DOM结构 加载完毕,就能执行包裹的代码 |
执行次数 | 只能执行一次,如果第二次,那么 第一次的执行会被覆盖 | 可以执行多次,第N次都不会被上 一次覆盖 |
// 1.第一种写法
$(document).ready(function () {
// alert("hello lnj");
});
// 2.第二种写法
jQuery(document).ready(function () {
// alert("hello lnj");
});
// 3.第三种写法(推荐)
$(function () {
// alert("hello lnj");
});
// 4.第四种写法
jQuery(function () {
alert("hello lnj");
});
当便捷访问符号发生冲突时,我们可以释放$使用权, 释放之后只能使用jQuery
jQuery.noConflict();
注意点:
// 2.自定义一个访问符号
var nj = jQuery.noConflict();
nj(function () {
alert("hello lnj");
});
<script>
$();//jQuery原理();就代表调用jQuery的核心函数
// 1.接收一个函数
$(function () {
alert("hello lnj");
// 2.接收一个字符串
// 2.1接收一个字符串选择器
// 返回一个jQuery对象, 对象中保存了找到的DOM元素
var $box1 = $(".box1");
var $box2 = $("#box2");
// 2.2接收一个字符串代码片段
// 返回一个jQuery对象, 对象中保存了创建的DOM元素
var $p = $("我是段落
");
$box1.append($p);
// 3.接收一个DOM元素
// 会被包装成一个jQuery对象返回给我们
var span = document.getElementsByTagName("span")[0];
var $span = $(span);
});
script>
<body>
<div class="box1">div>
<div id="box2">div>
<span>我是spanspan>
body>
var $div = $("div");
console.log($div);
var arr = [1, 3, 5];
console.log(arr);
var obj = {0:"lnj", 1:"33", 2:"male", length: 3}
静态方法对应的是对象方法,对象方法用实例对象调用,而静态方法用类名调用
// 1.定义一个类
function AClass() {
}
// 2.给这个类添加一个静态方法
// 直接添加给类的就是静态方法
AClass.staticMethod = function () {
alert("staticMethod");
}
// 静态方法通过类名调用
AClass.staticMethod();
// 3.给这个类添加一个实例方法
AClass.prototype.instanceMethod = function () {
alert("instanceMethod");
}
// 实例方法通过类的实例调用
// 创建一个实例(创建一个对象)
var a = new AClass();
// 通过实例调用实例方法
a.instanceMethod();
<script>
// 使用$直接调用,是静态方法
$.holdReady(true);
$(function () {
$("#first").click(function () {
alert("我是你想要的弹窗");
});
});
script>
<body>
<button id="first">点击测试弹出button>
<button id="second">解除延迟button>
<script>
$("#second").click(function(){
$.holdReady(false);
});
script>
body>
/*
第一个参数: 遍历到的元素
第二个参数: 当前遍历到的索引
*/
var arr = [1, 3, 5, 7, 9];
var obj = {0:1, 1:3, 2:5, 3:7, 4:9, length:5};
arr.forEach(function (value, index) {
console.log(index, value);
});
obj.forEach(function (value, index) {
console.log(index, value);// 报错
});
// 1.利用jQuery的each静态方法遍历数组
/*
第一个参数: 当前遍历到的索引
第二个参数: 遍历到的元素
*/
$.each(arr, function (index, value) {
console.log(index, value);
});
$.each(obj, function (index, value) {
console.log(index, value);
});
$(function () {
// 4.1遍历数组
var arr = [1, 3, 5, 7, 9];
// 4.1.1通过原生方法遍历数组
// 第一个回调函数参数是遍历到的元素
// 第二个回调函数参数是当前遍历的索引
// 第三个回调函数参数是当前被遍历的数组
// 返回值: 将回调函数返回值收集起来组成一个新的数组
var res = arr.map(function (ele, idx, arr) {
console.log(idx, ele, arr);
return ele + idx;
});
console.log(res);
// 4.1.2通过jQuery静态方法遍历数组
// 第一个回调函数参数是遍历到的元素
// 第二个回调函数参数是当前遍历的索引
// 返回值: 将回调函数返回值收集起来组成一个新的数组
var $res2 = $.map(arr, function (ele,idx) {
console.log(idx, ele);
return ele + idx;
});
console.log($res2);
// 4.2遍历对象
var obj = {name: "lnj", age:"33", gender:"male"};
/*
obj.map(function (ele, idx, obj) {
// 报错,原生JS没有map方法
console.log(idx, ele, obj);
});
*/
var $res = $.map(obj, function (value, key) {
console.log(key, value);
return key + value;
});
console.log($res);
});
作用: 去除字符串两端的空格
参数: 需要去除空格的字符串
返回值: 去除空格之后的字符串
<script>
$(function () {
var str = " lnj ";
console.log("---"+str+"---");
var $res = $.trim(str);
console.log("---"+$res+"---");
});
script>
作用: 判断传入的对象是否是window对象
返回值: true/false
// 真数组
var arr = [1, 3, 5, 7, 9];
// 伪数组
var arrlike = {0:1, 1:3, 2:5, 3:7, 4:9, length:5};
// 对象
var obj = {"name":"lnj", age:"33"};
// 函数
var fn = function(){};
// window对象
var w = window;
var res = $.isWindow(w);
console.log(res);
作用: 判断传入的对象是否是真数组
返回值: true/false
$(function () {
// 对象
var obj = {name:"lnj",age: "33", gender:"male"};
// 真数组
var arr = [1, 3, 5, 7, 9];
var $res = $.isArray(obj);
console.log($res);// false
var $res2 = $.isArray(arr);
console.log($res2);// true
});
作用: 判断传入的对象是否是一个函数
返回值: true/false
注意点:
$(function () {
var obj = {name:"lnj",age: "33", gender:"male"};
var arr = [1, 3, 5, 7, 9];
var fn = function () {}
var $res = $.isFunction(obj);
console.log($res);// false
$res = $.isFunction(arr);
console.log($res);
$res = $.isFunction(fn);
console.log($res);
// 通过该方法验证了我们前面所说的,jQuery框架本质是一个匿名函数
$res = $.isFunction($);
console.log($res);
});
选择器 | 名称 | 描述 | 返回 | 实例 |
---|---|---|---|---|
#id | id选择器 | 根据给定的id匹配一个元素 | 单个元素 | $("#box");选取id为box元素 |
.class | 类选择器 | 根据给定的类名匹配元素 | 集合元素 | $(".box");选取所有类名为box元素 |
element | 元素选择器 | 根据给定的元素名称匹配元素 | 集合元素 | $(“p”);选取所有 元素 |
* | 通配符选择器 | 匹配所有元素 | 集合元素 | $("*");选取所有元素 |
selector1,selector2,selectorN | 并集选择器 | 将所有选择器匹配到的元素合并后一起返回 | 集合元素 | $(“div,p,.box”);选取所有
元素,所有
元素和所有类名为box元素 |
选择器 | 名称 | 描述 | 返回 | 实例 |
---|---|---|---|---|
$(“ancestor descendant”) | 后代选择器 | 选取ancestor元素的所有descendant后代标签(不光是儿子,包括孙子/重孙子等) | 集合元素 | $(“div span”);选取
|
$(“parent > child”) | 子元素选择器 | 找到选取parent 元素中所有直接子元素child(只有儿子,不包括孙子/重孙子等) | 集合元素 | $(“div>span”);选取
|
$(“prev + next”) | 相邻兄弟选择器 | 选取prev元素后面紧跟的那个next元素 | 集合元素 | $(".one+div");选取类名为one的下一个同级的
|
$(“prev ~ siblings”) | 通用兄弟选择器 | 选取prev元素后面的所有next元素 | 集合元素 | $("#two~div");选取id名为two元素后面所有同级的
|
选择器 | 描述 | 返回 |
---|---|---|
:empty | 选取不包含子元素或文本为空的元素 | 集合元素 |
:parent | 选取含有子元素或文本的元素 | 集合元素 |
:contains(text) | 选取含有文本内容为text的元素 | 集合元素 |
:has(selector) | 选取含有选择器所匹配的元素的元素 | 集合元素 |
作用: 找到既没有文本内容也没有子元素的指定元素
<html lang="en">
<head>
<meta charset="UTF-8">
<title>05-jQuery选择器title>
<script src="代码/js/jquery-1.12.4.js">script>
<script>
$(function () {
// 找到所有div中不包含文本内容或子元素的元素
var $res = $("div:empty");
console.log($res.length); // 找到1个元素
$res.each(function (idx,ele) {
console.log(idx, ele); // one
});
});
script>
head>
<body>
<div class="one">div>
<div class="two">zsdiv>
<div class="three">
<span>lnjspan>
div>
<span class="five">span>
body>
html>
作用: 找到有文本内容或有子元素的指定元素
<html lang="en">
<head>
<meta charset="UTF-8">
<title>05-jQuery选择器title>
<script src="代码/js/jquery-1.12.4.js">script>
<script>
$(function () {
// 找到所有div中包含文本内容或子元素的元素
var $res = $("div:parent");
console.log($res.length);
$res.each(function (idx, ele) {
console.log(idx, ele);
});
});
script>
head>
<body>
<div class="one">div>
<div class="two">zsdiv>
<div class="three">
<span>lnjspan>
div>
<span class="five">span>
body>
html>
作用: 找到包含指定文本内容的指定元素
<html lang="en">
<head>
<meta charset="UTF-8">
<title>05-jQuery选择器title>
<script src="代码/js/jquery-1.12.4.js">script>
<script>
$(function () {
// 找到所有div中包含文本内容为lnj的元素
var $res = $("div:contains('lnj')");
console.log($res.length);// 找到2个元素
$res.each(function (idx, ele) {
console.log(idx, ele);// one,three,four
})
});
script>
head>
<body>
<div class="one">lnjdiv>
<div class="two">zsdiv>
<div class="three">lnjdiv>
<div class="four">
<span>lnjspan>
div>
<span class="five">span>
body>
html>
作用: 找到包含指定子元素的指定元素
和:parent区别: parent只要有子元素就会被找到,:has(selector)不仅要有子元素,而且子元素还必须满足条件
<html lang="en">
<head>
<meta charset="UTF-8">
<title>05-jQuery选择器title>
<script src="代码/js/jquery-1.12.4.js">script>
<script>
$(function () {
// 找到所有div中包含后代元素为span的元素
var $res = $("div:has('span')");
console.log($res.length);
$res.each(function (idx, ele) {
console.log(idx, ele);
});
});
script>
head>
<body>
<div class="one">
<span>jjjspan>
div>
<div class="two">
<p>zsp>
div>
<div class="three">
<p>
<span>lnjspan>
p>
div>
body>
html>
span> // 这里的class和nj就是属性节点
任何对象都有属性, 但是只有DOM对象才有属性节点
作用: 获取或者设置属性节点的值
注意点:
<script>
$(function () {
// 1.获取指定属性节点值
var $res = $(".span1").attr("nj");
console.log($res);
// 2.设置属性节点
$(".span1").attr("nj", "666");
$(".span2").attr("id", "box1 box2");
// 3.注意点:
// 3.1.获取属性节点时,只会获取找到所有元素中第一个元素的属性节点
$res = $("span").attr("class");
console.log($res);
$("span").attr("class", "lnj");
});
script>
作用: 删除属性节点
注意点:
<script>
$(function () {
// 1.设置属性节点时,会给所有找到元素设置属性节点
$("span").attr("test", "jonathan");
// 2.删除属性节点时,会删除所有找到元素的属性节点
$("span").removeAttr("test");
});
script>
作用: 设置或者获取元素的属性值
注意点:
<script>
$(function () {
// 1.设置属性
// 1.1.设置属性时,会设置所有找到元素的属性
$("span").prop("demo", "lnj");
// 2.获取属性
// 2.1.获取属性时,只会获取找到第一个元素的属性
console.log($("span").prop("demo"));
});
script>
<script>
$(function () {
// 删除所有找到元素的demo属性
$("span").removeProp("demo");
});
script>
<script>
$(function () {
// 1.可以通过prop获取属性节点
console.log($("input").prop("class"));
// 2.可以通过prop设置属性节点
$("input").prop("class", "tag");
// 3.如果没有默认值,那么attr获取返回undefined
//console.log($("input[type=checkbox]").attr("checked"));
// 4.如果没有默认值,那么prop获取返回false
console.log($("input[type=checkbox]").prop("checked"));
// 5.通过attr设置选中
//$("input[type=checkbox]").attr("checked", true);
// 6.通过prop设置选中
$("input[type=checkbox]").prop("checked", true)
});
script>
jQuery CSS类相关方法都是用于操作DOM对象的class属性节点的值
<script>
$(function () {
$("button").eq(0).click(function () {
// 1.添加一个类
//$("div").addClass("class1");
// 2.再添加一个类
//$("div").addClass("class2");
// 3.一次性添加多个类(用空格隔开)
$("div").addClass("class1 class2");
});
});
script>
<script>
$(function () {
$("button").eq(1).click(function () {
// 4.删除一个类
//$("div").removeClass("class2");
// 5.再删除一个类
//$("div").removeClass("class1");
// 6.一次性删除多个类(用空格隔开)
$("div").removeClass("class1 class2");
});
});
script>
<script>
$(function () {
$("button").eq(2).click(function () {
// 7.切换一个类
//$("div").toggleClass("class2");
// 8.切换多个类
$("div").toggleClass("class1 class2");
});
});
script>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>09-jQuery代码文本值title>
<script src="代码/js/jquery-1.12.4.js">script>
<script>
$(function () {
var $btns = $("button");
var $div = $("div");
$btns.eq(0).click(function () {
// 1.添加html, 相当于innerHTML
//$div.html("我是p标签
");
//$div.html("我是span标签
");
$div.html("我是文本");
});
$btns.eq(1).click(function () {
// 2.获取html
console.log($div.html());
});
});
script>
head>
<body>
<button>添加htmlbutton>
<button>获取htmlbutton>
<button>添加文本button>
<button>获取文本button>
<div>div>
body>
html>
<script>
$(function () {
$btns.eq(2).click(function () {
// 3.添加文本, 相当于innerText
// 如下内容不会被转换为标签
// $div.text('我是段落
');
$div.text('我是文本');
});
$btns.eq(3).click(function () {
// 4.获取文本
console.log($div.text());
});
script>
<script>
$(function () {
$btns.eq(4).click(function () {
// 4.添加value值
$("input").val("我是一个输入框");
});
$btns.eq(5).click(function () {
// 4.获取value值
console.log($("input").val());
});
});
script>
<script>
$(function () {
$("button").click(function () {
// 1.单个样式设置
$("div").css("width", "100px");
$("div").css("height", "100px");
$("div").css("background", "red");
// 2.链式设置样式
$("div").css("width", "100px").css("height", "100px").css("background", "red");
// 3.传入对象一次性设置样式
$("div").css({
"width":"100px",
"height":"100px",
"background":"blue"
});
// 4.获取指定样式的值
console.log($("div").css("width"));
});
});
script>
<script>
$(function () {
$("button").eq(0).click(function () {
// 1.获取元素宽度(不包括padding和border)
// alert($('.son').width());
});
$("button").eq(1).click(function () {
// 2.设置元素宽度(不包括padding和border)
// $(".son").width("50px");
});
});
script>
<script>
$(function () {
$("button").eq(0).click(function () {
// 1.获取元素宽度(不包括padding和border)
// alert($('.son').width());
});
$("button").eq(1).click(function () {
// 2.设置元素宽度(不包括padding和border)
// $(".son").width("50px");
});
});
script>
<script>
$(function () {
$("button").eq(0).click(function () {
// 1.获取距离窗口的偏移位(从border开始)
alert($('.son').offset().left); // 100
});
$("button").eq(1).click(function () {
// 2.设置距离窗口的偏移位
$('.son').offset({left:10, top:10});
});
});
script>
<script>
$(function () {
$("button").eq(0).click(function () {
// 1.获取匹配元素相对父元素的偏移
alert($('.son').position().left);// 50
});
$("button").eq(1).click(function () {
// 2.无效,不能设置相对定位元素的偏移位
$('.son').position({left:10, top:10})
});
});
script>
<script>
$(function () {
$("button").eq(0).click(function () {
// 7.获取匹配元素相对滚动条顶部的偏移
// alert($('.scroll').scrollTop());
// alert($('html').scrollTop());
// 兼容所有浏览器写法
alert($('html').scrollTop()+$('body').scrollTop());
});
$("button").eq(1).click(function () {
// 8.设置匹配元素相对滚动条顶部的偏移
// $('.scroll').scrollTop(100);
// $('html').scrollTop(100);
// 兼容所有浏览器写法
$('html,body').scrollTop(100);
});
});
script>
<script>
$(function () {
$("button").eq(0).click(function () {
// 7.获取匹配元素相对滚动条水平的偏移
// alert($('.scroll').scrollLeft());
// alert($('html').scrollLeft());
// 兼容所有浏览器写法
alert($('html').scrollLeft()+$('body').scrollLeft());
});
$("button").eq(1).click(function () {
// 8.设置匹配元素相对滚动条水平的偏移
// $('.scroll').scrollLeft(100);
// $('html').scrollLeft(100);
// 兼容所有浏览器写法
$('html,body').scrollLeft(100);
});
});
script>
事件绑定方式一
事件绑定方式二
建议:
能用eventName就用eventName, 不能用eventName就用on
<script>
$(function () {
// 1.通过eventName绑定事件
$("button").click(function () {
alert("hello lnj");
});
$("button").click(function () {
alert("hello 123");
});
$("button").mouseleave(function () {
alert("hello mouseleave");
});
$("button").mouseenter(function () {
alert("hello mouseenter");
});
// 2.通过on绑定事件
$("button").on("click", function () {
alert("hello click1");
});
$("button").on("click", function () {
alert("hello click2");
});
$("button").on("mouseleave", function () {
alert("hello mouseleave");
});
$("button").on("mouseenter", function () {
alert("hello mouseenter");
});
});
script>
<script>
$(function () {
function test1() {
alert("son1");
}
function test2() {
alert("son2");
}
function test3() {
alert("son3");
}
$(".son").click(test1);
$(".son").click(test2);
$(".son").on("mouseleave", test3);
$(".son").off("click", test1);
});
script>
当事件被触发时,系统会将事件对象(event)传递给回调函数,通过event对象我们就能获取时间的坐标
获取事件坐标有三种方式
event.page和event.client区别
<script>
$(function () {
// 获取事件的坐标
$(".son").click(function (event) {
// 获取相对于事件元素左上角坐标
console.log(event.offsetX, event.offsetY);
// 获取相对于视口左上角坐标
console.log(event.clientX, event.clientY);
// 获取相对于页面左上角坐标
console.log(event.pageX, event.pageY);
});
});
script>
<script>
$(function () {
$(".son").click(function (event) {
console.log(".son");
// 在子元素中停止事件冒泡,时间不会继续向上传播,所以父元素click方法不会被触发
event.stopPropagation();
});
$(".father").click(function () {
console.log(".father");
});
});
script>
<script>
$(function () {
$("a").click(function (event) {
var str = $("a").attr("href");
// 如果超链接是百度就不跳转
if(str.indexOf("baidu") > 0){
// 阻止默认行为
event.preventDefault();
}
});
});
script>
<script>
$(function () {
/*
$(".son").click(function () {
alert("son");
});
$(".father").click(function () {
alert("father");
});
// trigger会触发事件冒泡
// $(".father").trigger("click");
// $(".son").trigger("click");
// triggerHandler不会触发事件冒泡
// $(".father").triggerHandler("click");
// $(".son").triggerHandler("click");
*/
$("input[type='submit']").click(function () {
alert("点击了A标签");
});
// trigger会触发系统默认事件
// $("input[type='submit']").trigger("click");
// triggerHandler不会触发系统默认事件
$("input[type='submit']").triggerHandler("click");
});
script>
<script>
$(function () {
$(".father").on("njClick", function () {
alert("njClick");
});
$(".father").trigger("njClick");
});
script>
<script>
$(function () {
// 给父元素添加不带命名空间事件
$(".father").on("click", function () {
alert("father");
});
// 给父元素添加带命名空间事件
$(".father").on("click.66", function () {
alert("66 - father");
});
$(".son").on("click.nj", function () {
alert("nj - 向左走");
});
$(".son").on("click.66", function () {
alert("66 - 向右走");
});
// 会同时触发NJ和66编写的click事件
// 事件会冒泡到不带命名空间上级元素和带相同命名空间的上级元素
// $(".son").trigger("click");
// 只会触发NJ编写的click事件
// 事件不会冒泡到不带命名空间上级元素
// $(".son").trigger("click.nj");
// 只会触发66编写的click事件
// 事件只会冒泡到带相同命名空间的上级元素
$(".son").trigger("click.66");
});
script>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>18-jQuery事件委托title>
<script src="../day01/代码/js/jquery-1.12.4.js">script>
<script>
$(function () {
// 1.监听li点击事件
$("li").click(function () {
// 弹出当前点击行内容
alert($(this).html());
});
// 2.监听新增按钮点击
var count = 0;
$("button").eq(0).click(function () {
count++;
// 新增一行内容
$("ul").append("我是新增内容" +count+"")
});
});
script>
head>
<body>
<ul>
<li>我是第1行li>
<li>我是第2行li>
<li>我是第3行li>
ul>
<button>新增一行button>
<button>移除事件委托button>
body>
html>
<script>
$(function () {
// 1.委托ul监听li的点击事件
$("ul").delegate("li","click",function () {
// 前面我们说过事件委托就是让别人帮忙做事,但最终的结果还是会返回到我们手里,所以这里的this是触发事件的li
// 这里的this之所以是触发事件的li,本质是因为"事件冒泡", 触发事件的li向上传递到ul,触发了click事件.
// console.log(this);
// 弹出当前点击行内容
alert($(this).html());
});
// 2.监听新增按钮点击
var count = 0;
$("button").eq(0).click(function () {
count++;
// 新增一行内容
$("ul").append("我是新增内容" +count+"")
});
});
script>
<script>
$(function () {
// 移动到子元素不会触发事件
// 2.1移入事件
$('.father').mouseenter(function () {
console.log('mouseenter');
});
// 2.2移除事件
$('.father').mouseleave(function () {
console.log('mouseleave');
});
});
script>
<script>
$(function () {
// 2.1移入事件
$('.father').mouseover(function () {
console.log('mouseover') ;
});
// 2.2移除事件
$('.father').mouseout(function () {
console.log('mouseout') ;
});
});
script>
<script>
$(function () {
/*
// 传入两个回调函数,一个监听移入,一个监听移出
$(".father").hover(function () {
console.log("mouseenter");
}, function () {
console.log("mouseleave");
});
*/
// 如果只传入一个方式,那么这个方式既监听移入也监听移出
$(".father").hover(function () {
console.log("移入移除");
});
});
script>
// 编写jQuery相关代码
$("button").eq(0).click(function () {
// $("div").css("display", "block");
// 注意: 这里的时间是毫秒
$("div").show(1000, function () {
// 作用: 动画执行完毕之后调用
alert("显示动画执行完毕");
});
});
$("button").eq(1).click(function () {
// $("div").css("display", "none");
$("div").hide(1000, function () {
alert("隐藏动画执行完毕");
});
});
$("button").eq(2).click(function () {
$("div").toggle(1000, function () {
alert("切换动画执行完毕");
});
});
$("button").eq(0).click(function () {
$("div").slideDown(1000, function () {
alert("展开完毕");
});
});
$("button").eq(1).click(function () {
$("div").slideUp(1000, function () {
alert("收起完毕");
});
});
$("button").eq(2).click(function () {
$("div").slideToggle(1000, function () {
alert("收起完毕");
});
});
$("button").eq(0).click(function () {
$("div").fadeIn(1000, function () {
alert("淡入完毕");
});
});
$("button").eq(1).click(function () {
$("div").fadeOut(1000, function () {
alert("淡出完毕");
});
});
$("button").eq(2).click(function () {
$("div").fadeToggle(1000, function () {
alert("切换完毕");
});
});
$("button").eq(3).click(function () {
$("div").fadeTo(1000, 0.2, function () {
alert("淡入完毕");
})
});
/*
第一个参数: 接收一个对象, 可以在对象中修改属性
第二个参数: 指定动画时长
第三个参数: 指定动画节奏, 默认就是swing
第四个参数: 动画执行完毕之后的回调函数
*/
$(".two").animate({
marginLeft: 500
}, 5000, "linear", function () {
// alert("自定义动画执行完毕");
});
$("button").eq(1).click(function () {
$(".one").animate({
width: "+=100"
}, 1000, function () {
alert("自定义动画执行完毕");
});
});
$(".one").animate({
width: 500,
height: 500
}, 1000, function () {
alert("自定义动画执行完毕");
});
$("div").slideDown(1000).slideUp(1000).show(1000);
$(".one").slideDown(1000,function () {
$(".one").slideUp(1000, function () {
$(".one").show(1000);
});
});
// 立刻变为黄色,然后再执行动画
$(".one").slideDown(1000).slideUp(1000).show(1000).css("background", "yellow");
$(".one").slideDown(1000,function () {
$(".one").slideUp(1000, function () {
$(".one").show(1000, function () {
$(".one").css("background", "yellow")
});
});
});
$(".one").slideDown(1000).slideUp(1000).show(1000).queue(function () {
$(".one").css("background", "yellow")
});
$(".one").slideDown(1000).slideUp(1000).show(1000).queue(function (next) {
$(".one").css("background", "yellow");
next(); // 关键点
}).queue(function () {
$(".one").css("width", "500px")
});
$(".one").animate({
width: 500
// height: 500
}, 1000).delay(2000).animate({
height: 500
}, 1000);
// 立即停止当前动画, 继续执行后续的动画
$("div").stop();
$("div").stop(false);
$("div").stop(false, false);
// 立即停止当前和后续所有的动画
$("div").stop(true);
$("div").stop(true, false);
// 立即完成当前的, 继续执行后续动画
$("div").stop(false, true);
// 立即完成当前的, 并且停止后续所有的
$("div").stop(true, true);
// 1.创建一个节点
var $li = $("新增的li ");
// 2.添加节点
// $("ul").append($li);
$li.appendTo("ul");
// 1.创建一个节点
var $li = $("新增的li ");
// 2.添加节点
// $("ul").prepend($li);
$li.prependTo("ul");
// 1.创建一个节点
var $li = $("新增的li ");
// 2.添加节点
// $("ul").after($li);
$li.insertAfter("ul");
// 1.创建一个节点
var $li = $("新增的li ");
// 2.添加节点
// $("ul").before($li);
$li.insertBefore("ul");
$("div").empty();
// 删除所有div
$("div").remove();
// 删除div中id是box1的那个div
$("div").remove("#box1");
// 删除所有div
$("div").detach();
// 删除div中id是box1的那个div
$("div").detach("#box1");
$("button").click(function () {
// $("div").remove();
// $("div").empty();
// $("li").remove(".item");
// 利用remove删除之后再重新添加,原有的事件无法响应
// var $div = $("div").remove();
// 利用detach删除之后再重新添加,原有事件可以响应
var $div = $("div").detach();
// console.log($div);
// 将删除的返回值重新添加到body上
$("body").append($div);
});
$("div").click(function () {
alert("div被点击了");
});
// 编写jQuery相关代码
$("button").click(function () {
// 创建一个新的节点
var $item = $("我是标题6
");
// 利用新的节点替换旧的节点
// $("h1").replaceWith($item);
$item.replaceAll("h1");
});
$(function () {
// clone([Even[,deepEven]])
$("button").eq(0).click(function () {
// 1.浅复制一个元素
var $li = $("li:first").clone(false);
// 2.将复制的元素添加到ul中
$("ul").append($li); // 点击li无法响应事件
});
$("button").eq(1).click(function () {
// 1.深复制一个元素
var $li = $("li:first").clone(true);
// 2.将复制的元素添加到ul中
$("ul").append($li); // 点击li可以响应事件
});
$("li").click(function () {
alert($(this).html());
});
});
<script type="text/javascript">
//测试使用 jQuery wrap, wrapAll, wrapInner
$(function(){
//包装 li 本身
$("#box1 li").wrap("");
//包装所有的 li
$("#box2 li").wrapAll("");
//包装 li 里边的文字.
$("#box3 li").wrapInner("");
})
script>
$.post()
方法来获取数据,那么默认就是禁用缓存的$.get()
方法来获取数据,可以通过设置时间戳来避免缓存。 可以在URL后面加上+(+new Date)$.get('ajax.xml?'+(+new Date),function () { //内容});
$.ajax
方法来获取数据,只要设置cache:false即可。$.extent({})
封装全局函数,选择器插件,扩展已有的object对象过$.fn.extend({})
封装对象方法插件