jQuery学习笔记(一) 样式篇

本文介绍了jQuery的基本使用,包括如何引入库、选择器的应用、DOM操作、属性与样式处理以及数据存储。讲解了jQuery与原生JavaScript的区别,如通过$()获取的是类数组对象,以及如何在jQuery对象和DOM对象之间转换。此外,还提到了jQuery中的html()、text()和val()方法,以及如何动态管理class和样式。最后,讨论了jQuery中的.data()方法用于存储和检索元素相关数据的特点。

引入

  1. jQuery只是一个js脚本库,不需要安装,只要在标签中引入就可以
<script type="text/javascript" src="https://www.imooc.com/static/lib/jquery/1.9.1/jquery.js"></script>
  1. 2.x版本体量比较小,去掉了兼容IE9之前的内容

  2. 原生js通过document.getElementById获取的DOM元素是一个dom对象,而jQuery通过$(’#myid’)获取到的是一个包含DOM对象信息的类数组元素(同document.getElementsByClassName).

  3. jQuery声明变量一般用$开头,let $p = $(’#myid’); //


    $p.html(‘content of the div’);

  4. if想要操作DOM对象的属性,可以把jQuery对象转换成DOM对象:
    a. 方法一:用下标 $('myid')[0].style.color = 'red'
    b.方法二:用jQuery的get()方法 $('div').get(0).style.color = 'red'

  5. 把DOM对象转化成jQuery对象的方法:$(DOM对象)

  6. 选择器id: $('#myid') class: $('.myclass') 元素: $('p') 全选择器:$('*')

IE会将注释节点视为元素,所以在IE中调用getElementsByTagName里面会包含注释节点,这个通常是不应该的

  1. 层级选择器:
    在这里插入图片描述

选择器siblings的查找范围必须是"prev元素"之后的元素,并且是同辈元素(即与"prev元素"有同一个的父元素)

  1. 基本筛选选择器:
    在这里插入图片描述
  2. 内容筛选选择器:
    在这里插入图片描述
  3. 可见性筛选
    在这里插入图片描述
  4. 属性选择器
    在这里插入图片描述
  5. 子元素选择器
    在这里插入图片描述
  6. 表单元素选择器:
    在这里插入图片描述
  7. 表单对象属性选择器
    在这里插入图片描述
  8. this – 特殊选择器
    this在js中指的是当前的上下文对象,就是方法/属性的所有者
    let $this = $(this); // 把this加工成jQuery对象
  9. 操作attribute(特性、属性)的方法:
    DOM中有三个基本方法:getAttribute() setAttribute() removeAttribute() // 但是有兼容问题
    jQuery中只有两个:attr() removeAttr() // 而且没有兼容问题
$("input:first").attr('value') // 获取第一个input的属性‘value’的值
$("input:eq(1)".attr('value', 'newvalue'); // 获取第二个input,并设置属性‘value’的值为‘newvalue’
$("input:first").attr('value', (i,val) => {
	return '通过function来设置属性value的值' + val);
})
$('#myinput').attr({'attrname1': 'attval1', 'attname2': 'attval2'}); // 设置多个属性
$('#myinput').removeAttr('value'); // 删除‘value’属性

注意attribute和property的区别:property是指DOM元素作为对象附加的内容,例如tagName,nodeName等,要用.prop()获取

  1. html() 和 text()
$('.myclass').html(); // 返回的是`$(.myclass)`获取的元素集合中第一个元素的HTML内容
$('.myclass').html('<p>new value</p>'); // 会重新设置获取到所有元素(class为myclass元素)的html内容为p元素中的‘new value’
$('.myclass').html(() => {
	return 'new value' // 通过function来重置html内容
});
$('.myclass').text(); // 返回的是`$(.myclass)`获取的所有元素包括他们的后代的合并文本
$('.myclass').text('<p>new value</p>'); // 会重新设置获取到所有元素内容的文本为'<p>new value</p>'
$('.myclass').text(() => {
	return 'new value' // 通过function来重置text内容
});

html() 针对的是整个html内容包括标签,text()获取到的是文本内容
html(val)和text(val)的区别是对html标签是否识别: ’< p >new value< /p >'text会把整体渲染为一个字符串,而html会渲染成p标签。

  1. val() 只能用于处理表单元素 – input、select、textarea
$('input').val();  // 获取到集合中第一个元素的value值
$('input').val(value); // 设置匹配到所有元素的value
$('input').val(function() {}); // 通过函数赋值

当对象是select元素,没有选项被选中,返回null
当对象select元素有multiple属性,并且至少有一个被选中,返回一个数组(空也为null)

  1. 动态增加、删除class
$('div').addClass(‘classname1 classname2 classname3'); // 给所有匹配到的元素添加所有的class
.removeClass([classnames]); // 同addclass
  1. 样式切换 .toggleClass(‘newclass’); // 匹配的元素有‘newclass’就删除,没有就增加;
  2. 样式操作 .css()
$('.myclass').css('width'); // 585px -- 匹配的第一个元素的width属性
$('.myclass').css(['width', 'height']); // 传数组,返回的是一个对象 {width: "585px", height: "21px"}
$('.myclass').css("width",50); //匹配到的所有元素的对应样式属性都会改变
.css({ // 也可以是一个对象,改变多个样式属性
    'font-size'        :"15px",
    "background-color" :"#40E0D0",
    "border"           :"1px solid red"
})

取值时,jQuery颜色统一用rgb,尺寸用px
.css()支持驼峰或小写-
.css(‘width’: 50) 和 .css(‘width’, ‘50px’) 等价

  1. 属性与样式元素的数据存储 .data
$('#myh2').data(); // {name: "hh"}
$('#myh2').data('name'); // hh
$('#myh2').data('newdataname', 'newdatavalue'); // 给data添加新的‘newdataname’


// data()获取单个属性
console.log($( "body" ).data( "foo" ));
 
// 获取所有属性
console.log($( "body" ).data());
 
// 删除属性
$( "body" ).removeData("foo");

// 批量修改属性
$( "body" ).data({"new" : 123, "name":"yy", "sex" : "female"});

// 试图使用jQuery修改name属性
	$("#b").data("name","newb"); // 不会修改DOM
	
	// 使用DOM修改
	$("#b")[0].dataset.hobby = "run"; // 会修改DOM

使用jQuery修改属性只是在内存中的操作,并不会刷新dom。但是通过js中的dataset修改时候,会刷新DOM,这是两者最大的不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值