Web 前端学习 之jQuery属性操作

简介

属性操作有如下几种方法

分别跟之前js中的几种方法对应

jquery动态给span的文本赋值 span jquery赋值_html


jquery动态给span的文本赋值 span jquery赋值_jquery动态给span的文本赋值_02

注意这里的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>

jquery动态给span的文本赋值 span jquery赋值_jquery动态给span的文本赋值_03


然后是text

<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
    <script>
        $(function () {
            alert($('div').text())
        })
    </script>

jquery动态给span的文本赋值 span jquery赋值_js_04


很明显可以看出区别, 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>

jquery动态给span的文本赋值 span jquery赋值_js_05


下面是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>

jquery动态给span的文本赋值 span jquery赋值_web_06


很明显,html的赋值方法会自动渲染标签,而text的方法会把所有的内容都当成文本传入

val 的操作

使用val可以轻松的获取到表单对象的值

这是一个初始的表单(内含多个选择项),通过val的操作可以获取以及修改表单的选项

jquery动态给span的文本赋值 span jquery赋值_html_07

<!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>

jquery动态给span的文本赋值 span jquery赋值_jquery_08

val修改值

方法一
$(function () {
            $('#username').val('我是修改后的value值')
            // 批量操作单选
            $(":radio").val(["radio2"]);
            // 批量操作筛选框的选中状态
            $(":checkbox").val(["checkbox3", "checkbox2"]);
            // 批量操作多选的下拉框选中状态
            $("#multiple").val(["mul2", "mul3", "mul4"]);
            // 操作单选的下拉框选中状态
            $("#single").val(["sin2"]);
        });

jquery动态给span的文本赋值 span jquery赋值_jquery动态给span的文本赋值_09

方法二

只需一句话

<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;

下面是一个综合小案例, 实现了反选,全选,全不选,弹出选中内容等操作

jquery动态给span的文本赋值 span jquery赋值_web_10

<!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>