jQuery节点操作
创建元素
$('<li></li>')
追加元素1
<ul class="box">
<li>这是原本的标签1</li>
<li class="old">这是原本的标签2</li>
<li>这是原本的标签3</li>
</ul>
<script src="../js/jquery.min.js"></script>
<script>
var $ul = $(".box");
var $newLi = $('<li>这是新的标签</li>');
var $li = $(".old");
</script>
向父元素最后追加
- 语法(写法1): 父元素jQuery对象.append(新创建的jQuery对象);
- 语法(写法2): 新创建的jQuery对象.appendTo(父元素jQuery对象 或 '父元素选择器');
$ul.append(newLi);
$newLi.appendTo($ul);
$newLi.appendTo(".box");
向父元素最前面追加
- 语法(写法1):父元素jQuery对象.prepend(新创建的jQuery对象);
- 语法(写法2):新创建jQuery对象.prependTo('父元素选择器' 或 父元素jQuery对象);
$ul.prepend($newLi);
$newLi.prependTo($ul);
$newLi.prependTo('.box');
追加元素2
向元素后面追加新的兄弟
- 语法(写法1):jQuery对象.after(新创建的jQuery对象);
- 语法(写法2):新创建jQuery对象.insertAfter('选择器' 或 jQuery对象);
$li.after($newLi);
$newLi.insertAfter($li);
$newLi.insertAfter(".old");
向元素前面追加新的兄弟
- 语法(写法1):jQuery对象.before(新创建的jQuery对象);
- 语法(写法2):新创建jQuery对象.insertBefore('选择器' 或 jQuery对象);
$li.before($newLi);
$newLi.insertBefore($li);
$newLi.insertBefore(".old");
删除元素(直接删除元素节点)
- 语法:jQuery对象.remove();
- 删除谁就让谁调用这个方法
$li.remove();
清空元素(清空元素节点的内容)
清空方法1:jQuery对象.empty();
$ul.empty();
清空方法2
$ul.html('');
克隆元素
- 语法:jQuery对象.clone(布尔值);
- 返回值:返回克隆好的元素
- 参数:默认是false,表示仅仅克隆内容。true,克隆内容和事件
$("body").append($ul.clone(true));
jQuery操作元素的尺寸
- 直接获取的就是数值,不需要进行字符串转换(css).
- 回顾:border及以内是可视的区域。
- border可以添加颜色
- padding和内容可以添加背景颜色
width()和height()方法
innerWidth()和innerHeight()方法
- 操作的大小是内容部分 + padding
- 设置:
- 语法:jQuery 对象.innerWidth(数字);
- 获取:
- 语法:jQuery 对象.innerWidth()
outerWidth()和outerHeight()方法
- 操作的大小是内容部分 + padding + border
- 设置:
- 语法:jQuery 对象.outerWidth(数字);
- 获取:
- 语法:jQuery 对象.outerWidth();
jQuery操作元素的位置
<style>
.out {
position: relative;
left: 20px;
top: 20px;
width: 300px;
height: 300px;
background-color: pink;
}
.out .in {
position: absolute;
left: 50px;
top: 50px;
width: 100px;
height: 100px;
background-color: salmon;
}
</style>
<body>
<div class="out">
<div class="in"></div>
</div>
<script src="../js/jquery.min.js"></script>
<script>
var $out = $(".out");
var $in = $(".in");
</script>
</body>
获取元素距离文档的位置
- 语法:jQuery 对象.offset();
- 返回一个对象,对象中包含了元素的位置
- 注意:offset() 方法获取的元素的位置,永远参照文档,和定位没有关系.
- 演示代码
console.log($in.offset());
console.log($in.offset().top);
console.log($in.offset().left);
距离上级定位参考元素的位置
- 语法:jQuery 对象.position();
- 返回的一个对象,对象中包含了元素的位置
- 注意:position() 方法获取的元素的位置,参照最近的定位元素(和定位有关系)
- 演示代码
console.log($in.position());
console.log($in.position().top);
console.log($in.position().left);
操作卷去的页面间距
- 获取
- 语法:jQuery 对象.scrollTop();
- 返回数字
- 设置
- 语法:jQuery 对象.scrollTop(数字)
- 出现滚动条的情况
- 元素的宽高是固定的,但是内容比较多,可能会出现水平方向或者垂直方向的滚动条。
- 整个页面的高度比较高,也会出现垂直方向的滚动条。
- 演示代码
<style>
body {
height: 4000px;
}
.box {
width: 300px;
height: 300px;
border: 1px solid #333;
margin: 50px auto;
font: 16px/32px "宋体";
overflow: auto;
}
input {
position: fixed;
bottom: 50px;
right: 50px;
}
</style>
<div class="box">
<p>段落内容</p>
<p>段落内容</p>
<p>段落内容</p>
<p>段落内容</p>
<p>段落内容</p>
<p>段落内容</p>
<p>段落内容</p>
<p>段落内容</p>
<p>段落内容</p>
<p>段落内容</p>
<p>段落内容</p>
<p>段落内容</p>
<p>段落内容</p>
<p>段落内容</p>
<p>段落内容</p>
<p>段落内容</p>
<p>段落内容</p>
<p>段落内容</p>
<p>段落内容</p>
<p>段落内容</p>
<p>段落内容</p>
<p>段落内容</p>
</div>
<input type="button" value="返回顶部" class="backTop">
var $box = $(".box");
var $backTop = $(".backTop");
$box.scroll(function (){
console.log($(this).scrollTop());
});
$(document).scroll(function (){
console.log($(this).scrollTop());
});
$backTop.click(function (){
$(document).scrollTop(0);
});
综合案例
固定导航
var group = $box2.offset().top;
$(document).scroll(function (){
var s = $(this).scrollTop();
if(s >= group){
$box2.addClass("active");
$backTop.show();
}else {
$box2.removeClass("active");
$backTop.hide();
}
});
返回顶部
- 注意:直接使用document.scrollTop是会报错的.
- 源代码
$backTop.click(function (){
$("html,body").animate({"scrollTop":0},500);
});
楼梯效果