选择器
- 基本选择器
- 层级选择器(重点)、基本过滤选择器
// 1.后代选择器 -> 空格
$(“#j_wrap li”) 选择id为j_wrap的元素的所有后代元素li
// 2.子代选择器 -> >
$(“#j_wrap > ul > li”) 选择id为j_wrap的元素的所有子元素ul的所有子元素li
// 3.基本过滤
3.1 :eq(index) $(“li:eq(2)”) 选择匹配到的元素中索引号为index的一个元素
3.2 :odd $(“li:odd”)选择匹配到的元素中索引号为奇数的所有元素
3.3 :even $(“li:even”) 选择匹配到的元素中索引号为偶数的所有元素
- 筛选选择器
// 1.find(selector)
$(“#j_wrap”).find(“li”) 选择id为j_wrap的所有后代元素li(子子孙孙)
// 2.children()
$(“#j_wrap”).children(“ul”) 选择id为j_wrap的所有子代元素ul
// 3.siblings()
$(“#j_liItem”).siblings() 查找所有兄弟元素(不包括自己)
// 4.parent()
$(“#j_liItem”).parent(“ul”) 选择id为j_liItem的父元素
// 5.eq(index)
$(“li”).eq(2) 选择所有li元素中的第三个
使用jQuery操作DOM
样式操作
- 样式属性操作
$(selector).css(“color”, “red”)
$(selector).css({“color”: “red”, “font-size”: “30px”});
$(selector).css(“font-size”);
- 类操作
1.添加类样式:$(selector).addClass(“liItem”);
2.移除类样式:$(selector).removeClass(“liItem”); // 不指定参数,表示移除被选中元素的所有类
3.判断有没有类样式:$(selector).hasClass(“liItem”);
4.切换类样式:$(selector).toggleClass(“liItem”); // 为指定元素切换类 className,该元素有类则移除,没有指定类则添加。
// 小经验
1 操作的样式非常少,那么可以通过.css()这个 方法来操作
2 操作的样式很多,那么要通过使用类的方式来操作
3 如果考虑以后维护方便(把CSS从js中分离出来)的话,推荐使用类的方式来操作。类比CSS书写位置(把css从html中分离出来)
jQuery动画
- 1.1.1 隐藏显示动画
1.$(selector).show(2000, function(){}); // 让匹配的元素展示出来
注意: 参数里面可以是时间也可以是预设值, 如: /* slow:600ms、normal:400ms、fast:200ms */
2.$(selector).hide(2000, function(){});
- 滑入滑出动画
// 1.滑入动画效果
$(selector).slideDown(speed,callback); // 让元素以下拉动画效果展示出来
注意: 省略参数或者传入不合法的字符串,那么则使用默认值:400毫秒(同样适用于fadeIn/slideDown/slideUp)
// 2.滑出动画效果
$(selector).slideUp(speed,callback);
// 3.滑入滑出切换动画效果
$(selector).slideToggle(speed,callback);
- 淡入淡出动画
// 1.淡入动画效果: 让元素以淡淡的进入视线的方式展示出来
$(selector).fadeIn(speed, callback);
// 2.淡出动画效果: 让元素以渐渐消失的方式隐藏起来
$(selector).fadeOut(1000);
// 3.淡入淡出切换动画效果: 通过改变透明度,切换匹配元素的显示或隐藏状态
$(selector).fadeToggle('fast',function(){});
// 4.改变透明度到某个值: 调节匹配元素的不透明度
与淡入淡出的区别:淡入淡出只能控制元素的不透明度从 完全不透明 到完全透明;而fadeTo可以指定元素不透明度的具体值。并且时间参数是必需的!
$(selector).fadeTo(1000, .5); // 0全透,1全不透
- 自定义动画
// 第一个参数表示:要执行动画的CSS属性(必选)
// 第二个参数表示:执行动画时长(可选)
// 第三个参数表示:动画执行完后立即执行的回调函数(可选)
$(selector).animate({params},speed,callback);
- 停止动画: 停止当前正在执行的动画
问题:
为什么要停止动画?
如果一个以上的动画方法在同一个元素上调用,那么对这个元素来说,后面的动画将被放到效果队列中。这样就形成了动画队列。(联想:排队进站)
动画队列里面的动画不会执行,直到第一个动画执行完成。
// 第一个参数表示后续动画是否要执 (true:后续动画不执行; false:后续动画会执行)
// 第二个参数表示当前动画是否执行完 (true:立即执行完成当前动画; false:立即停止当前动画)
// 都不给,默认false;
$(selector).stop(clearQueue,jumpToEnd);
解释:
当调用stop()方法后,队列里面的下一个动画将会立即开始。但是,如果参数clearQueue被设置为true,那么队列里面剩余的动画就被删除了,并且永远也不会执行。
如果参数jumpToEnd被设置为true,那么当前动画会停止,但是参与动画的每一个CSS属性将被立即设置为它们的目标值。比如:slideUp()方法,那么元素会立即隐藏掉。如果存在回调函数,那么回调函数也会立即执行。
注意:如果元素动画还没有执行完,此时调用sotp()方法,那么动画将会停止。并且动画没有执行完成,那么回调函数也不会被执行。
jQuery节点操作(待续)
- 添加元素
append()
作用:在被选元素内部的最后一个子元素(或内容)后面插入内容(存在或者创建出来的元素都可以)
常用参数:htmlString 或者 jQuery对象
// 在$(selector)中追加$node(jQuery对象)
$(selector).append($node);
// 在$(selector)中追加div元素(htmlString)
$(selector).append('<div></div>');
不常用操作:(用法跟append()方法基本一致)
1.appendTo()
作用:同append(),区别是:把$(selector)追加到node中去
$(selector).appendTo(node);
2.prepend()
作用:在元素的第一个子元素前面追加内容或节点
$(selector).prepend(node);
3.after()
作用:在被选元素之后,作为兄弟元素插入内容或节点
$(selector).after(node);
4.before()
作用:在被选元素之前,作为兄弟元素插入内容或节点
$(selector).before(node);
- 创建元素
// 动态创建元素
$(selector).html(‘<span>传智播客</span>’);
// 获取html内容
$(selector).html();
- 清空元素
// 清空指定元素的所有子元素(光杆司令)
// 没有参数
$(selector).empty();
$(selector).html(“”);
// “自杀” 把自己(包括所有内部元素)从文档中删除掉
$(selector).remove();
- 复制元素
// 复制$(selector)所匹配到的元素
// 返回值为复制的新元素
$(selector).clone();
操作form表单
- 1.1.1 属性操作
设置属性:
// 第一个参数表示:要设置的属性名称
// 第二个参数表示:改属性名称对应的值
$(selector).attr(“title”, “传智播客”);
获取属性:
// 参数为:要获取的属性的名称,改操作会返回指定属性对应的值
$(selector).attr(“title”);
移除属性:
$(selector).removeAttr(“title”);
注意:checked、selected、disabled要使用.prop()方法。
prop方法通常用来影响DOM元素的动态状态,而不是改变的HTML属性。例如:input和button的disabled特性,以及checkbox的checked特性。
- 值和内容
val()方法:
作用:设置或返回表单元素的值,例如:input,select,textarea的值
// 获取匹配元素的值,只匹配第一个元素
$(selector).val();
// 设置所有匹配到的元素的值
$(selector).val(“具体值”);
text() 方法:
作用:设置或获取匹配元素的文本内容
//获取操作不带参数(注意:这时候会把所有匹配到的元素内容拼接为一个字符串,不同于其他获取操作!)
$(selector).text();
//设置操作带参数,参数表示要设置的文本内容
$(selector).text(“我是内容”);
尺寸位置操作
- 高度和宽度操作
高度操作height() --->宽度类似
作用:设置或获取匹配元素的高度值
//带参数表示设置高度
$(selector).height(200);
//不带参数获取高度
$(selector).height();
- 坐标值操作
offset()
作用:获取或设置元素相对于文档的位置
// 无参数表示获取,返回值为:{left:num, top:num},值是相对于document的位置
$(selector).offset();
// 有参数表示设置,参数推荐使用数值类型
$(selector).offset({left:100, top: 150});
注意点:设置offset后,如果元素没有定位(默认值:static),则被修改为relative
position()
作用:获取相对于其最近的具有定位的父元素的位置。
// 获取,返回值为对象:{left:num, top:num}
$(selector).position();
注意:只能获取,不能设置。
scrollTop()
作用:获取或者设置元素垂直方向滚动的位置
// 无参数表示获取偏移
// 有参数表示设置偏移,参数为数值类型
$(selector).scrollTop(100);
scrollLeft()
作用:获取或者设置元素水平方向滚动的位置
$(selector).scrollLeft(100);
对scrollTop的理解:
垂直滚动条位置 是可滚动区域 在 可视区域上方的 被隐藏区域的高度。
如果滚动条在最上方没有滚动 或者 当前元素没有出现滚动条,那么这个距离为0
网友评论