jQuery笔记 03:jQuery对象(属性操作和 CSS 操作)

属性操作

什么是属性节点?
<!-- 在编写html代码时,在标签中添加的属性就是属性节点 -->
<!-- 在浏览器中找到 span 这个 dom 元素之后看到的 attributes 属性中保存的所有内容,都是属性节点 -->
<span name="dudu"></span>
如何操作属性节点?
$(function () {
  var span = document.getElementsByTagName("span")[0];
  // 设置属性:第一个参数是属性名,第二个参数是属性值
  span.setAttribute("name", "guo");
  // 获取属性:参数是属性名
  console.log(span.getAttribute("name"));
});

属性和属性节点有什么区别?

任何对象都有属性,但是只有DOM对象才有属性节点

attr()removeAttr()
<span class="span1" name='it666'></span>
<span class="span2" name='dudu'></span>

<script>
$(function () {
  // 获取或者设置属性节点的值
  // 如果传递一个参数,代表获取属性节点的值
  // 如果传递两个参数,代表设置属性节点的值
  // 注意:无论找到多少个元素,都只会返回第一个元素指定的属性节点的值,如果没有找到返回undefined
  console.log($("span").attr("class")); // span1
  // 注意:找到多少元素就会设置多少元素
  $("span").attr("name", "fei");
  // 注意:如果要设置的属性节点不存在,系统会自动增加该属性节点并赋值
  $("span").attr("abc", "123");
});
</script>
<span class="span1" name='it666'></span>
<span class="span2" name='dudu'></span>

<script>
$(function () {
  // 删除属性节点
  // 注意:会删除所有找到元素指定的属性节点
  $("span").removeAttr("class");
  // 删除多个属性节点
  $("span").removeAttr("class name");
});
</script>
prop()removeProp()
<span class="span1" name='it666'></span>
<span class="span2" name='dudu'></span>
<input type="checkbox" checked>

<script>
$(function () {
  // 用法与attr()和removeAttr()方法相似
  $("span").eq(1).prop("demo", "it666");
  console.log($("span").prop("demo")); // undefined
  $("span").removeProp("demo");
  // prop()不仅能够操作属性,还可以操作属性节点
  // 在操作属性节点时,具有 true 和 false 两个属性的属性节点(checked,selected,disabled)使用prop(),其他的使用attr()
  console.log($("input").prop("checked")); // true / false
  console.log($("input").attr("checked")); // checked / undefined
});
</script>
操作类相关的方法
.class1 {
  width: 100px;
  height: 100px;
  background-color: aqua;
}

.class2 {
  border: 10px solid #000;
}
<button>添加类</button>
<button>删除类</button>
<button>切换类</button>

<div></div>

<script>
$(function () {
  var btns = document.getElementsByTagName("button");
  btns[0].onclick = function () {
    // 添加类:多个类用空格隔开
    $("div").addClass("class1 class2");
  };
  btns[1].onclick = function () {
    // 删除类:多个类用空格隔开
    $("div").removeClass("class2");
  };
  btns[2].onclick = function () {
    // 切换类:有就删除,没有就添加,多个类用空格隔开
    $("div").toggleClass("class1");
  };
});
</script>
文本值相关的方法
div {
  width: 100px;
  height: 100px;
  border: 3px solid black;
}
<button>设置html</button>
<button>获取html</button>
<button>设置text</button>
<button>获取text</button>
<button>设置value</button>
<button>获取value</button>
    
<div></div>
<input type="text">

<script>
$(function () {
  var btns = document.getElementsByTagName("button");
  // 设置HTML
  btns[0].onclick = function () {
    // 和原生js中的innerHTML相同
    $("div").html("<p>我是p<span>我是span</span></p>");
  };
  // 获取HTML
  btns[1].onclick = function () {
    // 输出:<p>我是p<span>我是span</span></p>
    console.log($("div").html());
  };
  // 设置text
  btns[2].onclick = function () {
    // 和原生js中的innerText相同
    $("div").text("<p>我是p<span>我是span</span></p>");
  };
  // 获取text
  btns[3].onclick = function () {
    // 输出:<p>我是p<span>我是span</span></p>
    console.log($("div").text());
  };
  // 设置value
  btns[4].onclick = function () {
    $("input").val("请输入内容");
  };
  // 获取value
  btns[5].onclick = function () {
    console.log($("input").val());
  };
});
</script>

CSS 操作

获取和设置样式

逐个设置样式

<div></div>

<script>
$("div").css("width", "100px");
$("div").css("height", "100px");
$("div").css("background", "rosybrown");
</script>

链式设置样式(链式操作如果大于3步,建议分开)

<div></div>

<script>
$('div').css('width', '200px').css('height', '200px').css('background', 'red');
</script>

批量设置样式(推荐)

<div></div>

<script>
$("div").css({
  width: "100px",
  height: "100px",
  background: "pink",
});
</script>

获取css样式的值

<div></div>

<script>
// 使用上面的设置
console.log($('div').css('width')); // 100px
console.log($('div').css('background')); // rgb(255, 192, 203) none repeat scroll 0% 0% / auto padding-box border-box
</script>
操作元素位置和尺寸
.father {
  width: 200px;
  height: 200px;
  background-color: red;
  border: 50px solid black;
  margin-left: 50px;
  position: relative;
}
.son {
  width: 100px;
  height: 100px;
  background-color: blue;
  position: absolute;
  left: 50px;
  top: 50px;
}
<div class="father">
    <div class="son"></div>
</div>

<button>获取</button>
<button>设置</button>

<script>
var btns = document.getElementsByTagName("button");
btns[0].onclick = function () {
  // 获取元素的宽度
  console.log($(".father").width()); // 200
  // 获取元素距离窗口的偏移量
  console.log($(".son").offset().left); // 150
  console.log($(".son").offset().top); // 100
  // 获取元素距离定位元素的偏移量
  console.log($(".son").position().left); // 50
  console.log($(".son").position().top); // 50
};
btns[1].onclick = function () {
  // 设置元素的宽度
  $(".father").width("500px");
  // 设置元素距离窗口的偏移量
  $(".son").offset({
    left: 10,
    top: 20,
  });
  // 不能通过position设置元素距离定位元素的偏移量
};
</script>
div {
  width: 100px;
  height: 150px;
  background-color: tomato;
  padding: 10px;
  border: 10px black solid;
  margin: 10px;
}
<div></div>
<script>
    var $div = $('div');
    // 内容尺寸:width和height 
    console.log($div.width(), $div.height()); // 100 150
    // 内部尺寸:width和height加上padding 
    console.log($div.innerWidth(), $div.innerHeight()); // 120 170
    // 外部尺寸:width和height加上padding和border 如果是true,则加上margin
    console.log($div.outerWidth(), $div.outerHeight()); // 140 190
    console.log($div.outerWidth(true), $div.outerHeight(true)); // 160 210
</script>
获取设置滚动条位置
.scroll {
  width: 100px;
  height: 200px;
  border: 1px solid black;
  overflow: auto;
}
<div class="scroll">
    我是div我是div我是div我是div我是div
    我是div我是div我是div我是div我是div
    我是div我是div我是div我是div我是div
    我是div我是div我是div我是div我是div
    我是div我是div我是div我是div我是div
</div>

<button>获取</button>
<button>设置</button>
<br><br> <!-- 此处省略其余的br,br的作用是用来使页面出现滚动条 -->

<script>
$(function () {
  var btns = document.getElementsByTagName("button");
  btns[0].onclick = function () {
    // 获取滚动的偏移量
    console.log($(".scroll").scrollTop());
    // 获取网页滚动的偏移量(兼容写法)
    console.log($("html").scrollTop() + $("body").scrollTop());
  };
  btns[1].onclick = function () {
    // 设置滚动的偏移量
    $(".scroll").scrollTop(60);
    // 设置网页的滚动偏移量(兼容写法)
    $("html, body").scrollTop(80);
  };
});
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值