Web 前端学习 之jQuery属性操作
简介
属性操作有如下几种方法
分别跟之前js中的几种方法对应
注意这里的html 与 text的区别
html与text的区别
获取属性
下面举一个简单的例子
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JQ属性操作</title>
</head>
<body>
<div>我是个div <span>我是div里面的span标签</span></div>
</body>
</html>
这是一个仅包含一个div和span的页面
我们通过jq来获取一下这个div的内容
首先是html
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
<script>
$(function () {
alert($('div').html())
})
</script>
然后是text
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
<script>
$(function () {
alert($('div').text())
})
</script>
很明显可以看出区别, html的获取方法包括了span标签本身,而text只获取其中的文本
赋值
接下来看看赋值上面的区别
同样是刚刚的例子
先看html的赋值方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JQ属性操作</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
<script>
$(function () {
$('div').html('<h1>我是通过text方法赋值的</h1>')
})
</script>
</head>
<body>
<div>我是个div <span>我是div里面的span标签</span></div>
</body>
</html>
下面是text方法的结果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JQ属性操作</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
<script>
$(function () {
$('div').text('<h1>我是通过text方法赋值的</h1>')
})
</script>
</head>
<body>
<div>我是个div <span>我是div里面的span标签</span></div>
</body>
</html>
很明显,html的赋值方法会自动渲染标签,而text的方法会把所有的内容都当成文本传入
val 的操作
使用val可以轻松的获取到表单对象的值
这是一个初始的表单(内含多个选择项),通过val的操作可以获取以及修改表单的选项
<!DOCTYPE html>
<html lang="zh_CN">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<body>
<input id="username" placeholder="输入用户名" value="我是默认value值"></input>
<br>
单选:
<input name="radio" type="radio" value="radio1" />radio1
<input name="radio" type="radio" value="radio2" />radio2
<br/>
多选:
<input name="checkbox" type="checkbox" value="checkbox1" />checkbox1
<input name="checkbox" type="checkbox" value="checkbox2" />checkbox2
<input name="checkbox" type="checkbox" value="checkbox3" />checkbox3
<br/>
下拉多选 :
<select id="multiple" multiple="multiple" size="4">
<option value="mul1">mul1</option>
<option value="mul2">mul2</option>
<option value="mul3">mul3</option>
<option value="mul4">mul4</option>
</select>
<br/>
下拉单选 :
<select id="single">
<option value="sin1">sin1</option>
<option value="sin2">sin2</option>
<option value="sin3">sin3</option>
</select>
</body>
</body>
</html>
val取值
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
<script type="text/javascript">
$(function () {
alert($('#username').val())
});
</script>
val修改值
方法一
$(function () {
$('#username').val('我是修改后的value值')
// 批量操作单选
$(":radio").val(["radio2"]);
// 批量操作筛选框的选中状态
$(":checkbox").val(["checkbox3", "checkbox2"]);
// 批量操作多选的下拉框选中状态
$("#multiple").val(["mul2", "mul3", "mul4"]);
// 操作单选的下拉框选中状态
$("#single").val(["sin2"]);
});
方法二
只需一句话
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
<script type="text/javascript">
$(function () {
$('#username').val('我是修改后的value值')
$("#multiple,#single,:radio,:checkbox").val(["radio2", "checkbox1", "checkbox3", "mul1", "mul4", "sin3"]);
});
</script>
attr与prop
attr与prop的区别就是
对于某个单选框,如果它的属性是这样的,也就是未选中的状态
<input type="checkbox" name="items" value="足球" />足球
$(":checkbox").attr("checked") 返回 undefined
$(":checkbox").prop("checked") 返回的是false;
下面是一个综合小案例, 实现了反选,全选,全不选,弹出选中内容等操作
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="../../script/jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function(){
// 给全选绑定单击事件
$("#checkedAllBtn").click(function () {
$(":checkbox").prop("checked",true);
});
// 给全不选绑定单击事件
$("#checkedNoBtn").click(function () {
$(":checkbox").prop("checked",false);
});
// 反选单击事件
$("#checkedRevBtn").click(function () {
// 查询全部的球类的复选框
$(":checkbox[name='items']").each(function () {
// 在each遍历的function函数中,有一个this对象。这个this对象是当前正在遍历到的dom对象
this.checked = !this.checked;
});
// 要检查 是否满选
// 获取全部的球类个数
var allCount = $(":checkbox[name='items']").length;
// 再获取选中的球类个数
var checkedCount = $(":checkbox[name='items']:checked").length;
// if (allCount == checkedCount) {
// $("#checkedAllBox").prop("checked",true);
// } else {
// $("#checkedAllBox").prop("checked",false);
// }
$("#checkedAllBox").prop("checked",allCount == checkedCount);
});
// 【提交】按钮单击事件
$("#sendBtn").click(function () {
// 获取选中的球类的复选框
$(":checkbox[name='items']:checked").each(function () {
alert(this.value);
});
});
// 给【全选/全不选】绑定单击事件
$("#checkedAllBox").click(function () {
// 在事件的function函数中,有一个this对象,这个this对象是当前正在响应事件的dom对象
// alert(this.checked);
$(":checkbox[name='items']").prop("checked",this.checked);
});
// 给全部球类绑定单击事件
$(":checkbox[name='items']").click(function () {
// 要检查 是否满选
// 获取全部的球类个数
var allCount = $(":checkbox[name='items']").length;
// 再获取选中的球类个数
var checkedCount = $(":checkbox[name='items']:checked").length;
$("#checkedAllBox").prop("checked",allCount == checkedCount);
});
});
</script>
</head>
<body>
<form method="post" action="">
你爱好的运动是?<input type="checkbox" id="checkedAllBox" />全选/全不选
<br />
<input type="checkbox" name="items" value="足球" />足球
<input type="checkbox" name="items" value="篮球" />篮球
<input type="checkbox" name="items" value="羽毛球" />羽毛球
<input type="checkbox" name="items" value="乒乓球" />乒乓球
<br />
<input type="button" id="checkedAllBtn" value="全 选" />
<input type="button" id="checkedNoBtn" value="全不选" />
<input type="button" id="checkedRevBtn" value="反 选" />
<input type="button" id="sendBtn" value="提 交" />
</form>
</body>
</html>