主页/jQuery教程/实用函数/jQuery字符串与数据操作

jQuery字符串与数据操作

8,109字
34–51 分钟

概览

目录

jQuery 提供了一系列实用函数,用于处理字符串和数据操作。这些工具函数作为 $ 命名空间下的方法,简化了常见的编程任务,如去除字符串首尾空白、解析 JSON 字符串、操作元素上的自定义数据以及序列化表单数据等。掌握这些方法能够提升代码的简洁性与效率,是 jQuery 字符串操作和 jQuery 数据操作的核心内容。本章将详细介绍这些函数的用法与特性。

jQuery.trim()

语法

jQuery.trim( string )

string:需要去除首尾空白字符的字符串。空白字符包括空格、制表符、换行符等。

示例

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>jQuery.trim 示例</title>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
</head>
<body>
    <input id="userInput" type="text" placeholder="输入一些内容">
    <button id="processBtn">处理输入</button>
    <p id="result"></p>

    <script>
        $('#processBtn').on('click', function() {
            var rawValue = $('#userInput').val();
            var trimmedValue = $.trim(rawValue);
            $('#result').text('原始长度: ' + rawValue.length + ', 处理后长度: ' + trimmedValue.length);
        });
    </script>
</body>
</html>

jQuery.param()

语法

jQuery.param( obj [, traditional ] )

obj:一个数组、普通对象或 jQuery 对象,表示要序列化的数据。
traditional:一个布尔值,指示是否使用传统的“浅层”序列化方式。

示例

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>jQuery.param 示例</title>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
</head>
<body>
    <button id="serializeBtn">序列化数据</button>
    <p id="queryString"></p>

    <script>
        $('#serializeBtn').on('click', function() {
            var data = {
                name: 'John Doe',
                age: 30,
                skills: ['JavaScript', 'HTML', 'CSS']
            };
            var result = $.param(data);
            $('#queryString').text(result);
        });
    </script>
</body>
</html>

jQuery.parseJSON()

语法

jQuery.parseJSON( jsonString )

jsonString:一个格式正确的 JSON 字符串。

示例

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>jQuery.parseJSON 示例</title>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
</head>
<body>
    <button id="parseBtn">解析 JSON</button>
    <p id="parsedResult"></p>

    <script>
        $('#parseBtn').on('click', function() {
            var jsonString = '{"name": "张三", "age": 28, "city": "北京"}';
            try {
                var obj = $.parseJSON(jsonString);
                $('#parsedResult').text('姓名: ' + obj.name + ', 年龄: ' + obj.age);
            } catch(e) {
                $('#parsedResult').text('解析失败: ' + e.message);
            }
        });
    </script>
</body>
</html>

jQuery.parseXML()

语法

jQuery.parseXML( xmlString )

xmlString:一个格式良好的 XML 字符串。

示例

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>jQuery.parseXML 示例</title>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
</head>
<body>
    <button id="parseXMLBtn">解析 XML</button>
    <div id="xmlResult"></div>

    <script>
        $('#parseXMLBtn').on('click', function() {
            var xmlString = '<books><book id="1"><title>jQuery 教程</title><author>张三</author></book></books>';
            try {
                var xmlDoc = $.parseXML(xmlString);
                var $xml = $(xmlDoc);
                var title = $xml.find('title').text();
                var author = $xml.find('author').text();
                $('#xmlResult').text('书名: ' + title + ', 作者: ' + author);
            } catch(e) {
                $('#xmlResult').text('XML 解析失败: ' + e.message);
            }
        });
    </script>
</body>
</html>

.data()

语法

// 获取数据
.data( key )
.data()

// 设置数据
.data( key, value )
.data( obj )

key:要获取或设置的数据键名。
value:要设置的数据值。
obj:一个包含键值对的对象,用于批量设置数据。

示例

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>.data 方法示例</title>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
</head>
<body>
    <div id="userCard" data-user-id="12345" data-user-role="admin">用户卡片</div>
    <button id="getDataBtn">获取 data 属性</button>
    <button id="setDataBtn">设置额外数据</button>
    <p id="dataDisplay"></p>

    <script>
        $('#getDataBtn').on('click', function() {
            var userId = $('#userCard').data('userId');
            var userRole = $('#userCard').data('userRole');
            $('#dataDisplay').text('用户 ID: ' + userId + ', 角色: ' + userRole);
        });

        $('#setDataBtn').on('click', function() {
            $('#userCard').data('lastAccess', new Date().toLocaleString());
            var lastAccess = $('#userCard').data('lastAccess');
            $('#dataDisplay').text('上次访问时间: ' + lastAccess);
        });
    </script>
</body>
</html>

jQuery.data()

语法

jQuery.data( element, key, value )
jQuery.data( element, key )
jQuery.data( element )

element:一个 DOM 元素,用于关联数据。
key:数据的键名。
value:要设置的数据值。

示例

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>jQuery.data 示例</title>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
</head>
<body>
    <div id="targetElement">目标元素</div>
    <button id="storeBtn">存储数据</button>
    <button id="retrieveBtn">检索数据</button>
    <p id="output"></p>

    <script>
        var element = document.getElementById('targetElement');

        $('#storeBtn').on('click', function() {
            $.data(element, 'timestamp', Date.now());
            $.data(element, 'counter', ($.data(element, 'counter') || 0) + 1);
            $('#output').text('数据已存储');
        });

        $('#retrieveBtn').on('click', function() {
            var timestamp = $.data(element, 'timestamp');
            var counter = $.data(element, 'counter');
            $('#output').text('时间戳: ' + timestamp + ', 计数器: ' + counter);
        });
    </script>
</body>
</html>

jQuery.hasData()

语法

jQuery.hasData( element )

element:要检查的 DOM 元素。

示例

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>jQuery.hasData 示例</title>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
</head>
<body>
    <div id="dataElement">数据元素</div>
    <div id="emptyElement">空元素</div>
    <button id="checkDataBtn">检查数据</button>
    <p id="checkResult"></p>

    <script>
        $.data(document.getElementById('dataElement'), 'key', 'value');

        $('#checkDataBtn').on('click', function() {
            var hasDataOnFirst = $.hasData(document.getElementById('dataElement'));
            var hasDataOnSecond = $.hasData(document.getElementById('emptyElement'));
            $('#checkResult').text('dataElement 有数据: ' + hasDataOnFirst + ', emptyElement 有数据: ' + hasDataOnSecond);
        });
    </script>
</body>
</html>

jQuery.removeData()

语法

jQuery.removeData( element [, name ] )

element:要移除数据的 DOM 元素。
name:要移除的数据键名。如果不指定,则移除该元素上所有通过 jQuery.data() 存储的数据。

示例

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>jQuery.removeData 示例</title>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
</head>
<body>
    <div id="cleanElement">待清理元素</div>
    <button id="addDataBtn">添加数据</button>
    <button id="removeDataBtn">移除数据</button>
    <button id="checkAgainBtn">再次检查</button>
    <p id="status"></p>

    <script>
        var el = document.getElementById('cleanElement');

        $('#addDataBtn').on('click', function() {
            $.data(el, 'testData', '一些重要信息');
            $('#status').text('数据已添加');
        });

        $('#removeDataBtn').on('click', function() {
            $.removeData(el, 'testData');
            $('#status').text('数据已移除');
        });

        $('#checkAgainBtn').on('click', function() {
            var hasData = $.hasData(el);
            $('#status').text('当前元素是否有数据: ' + hasData);
        });
    </script>
</body>
</html>

.serialize()

语法

.serialize()

示例

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>.serialize 示例</title>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
</head>
<body>
    <form id="myForm">
        <input type="text" name="username" value="张三">
        <input type="email" name="email" value="zhangsan@example.com">
        <select name="country">
            <option value="CN" selected>中国</option>
            <option value="US">美国</option>
        </select>
        <input type="checkbox" name="hobby" value="reading" checked> 阅读
        <input type="checkbox" name="hobby" value="music"> 音乐
    </form>
    <button id="serializeFormBtn">序列化表单</button>
    <p id="serializedResult"></p>

    <script>
        $('#serializeFormBtn').on('click', function() {
            var queryString = $('#myForm').serialize();
            $('#serializedResult').text(queryString);
        });
    </script>
</body>
</html>

.serializeArray()

语法

.serializeArray()

示例

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>.serializeArray 示例</title>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
</head>
<body>
    <form id="anotherForm">
        <input type="text" name="fullname" value="李四">
        <input type="number" name="age" value="25">
        <label><input type="radio" name="gender" value="male" checked> 男</label>
        <label><input type="radio" name="gender" value="female"> 女</label>
    </form>
    <button id="serializeArrayBtn">序列化为数组</button>
    <pre id="arrayResult"></pre>

    <script>
        $('#serializeArrayBtn').on('click', function() {
            var dataArray = $('#anotherForm').serializeArray();
            var output = '';
            $.each(dataArray, function(index, field) {
                output += '名称: ' + field.name + ', 值: ' + field.value + 'n';
            });
            $('#arrayResult').text(output);
        });
    </script>
</body>
</html>

版本变更记录

版本变更说明
1.0引入了核心的 jQuery.trimjQuery.paramjQuery.parseJSON.data() 方法。
1.4.3.data() 方法现在能够自动获取并转换 HTML5 data- 属性中的值,例如 data-foo="42" 会被作为数字 42 处理。
1.9jQuery.parseJSON 在传入空字符串或 null 时会返回 null 而不是抛出错误,以符合 JSON 规范。
3.0jQuery.parseJSON 被标记为已弃用,推荐使用原生的 JSON.parse。但为兼容性考虑,该方法在 3.x 版本中仍保留。
4.0正式移除jQuery.trimjQuery.parseJSON 等工具函数。开发者应使用原生 JavaScript 替代方法。.data().serializeArray() 等实例方法仍保留。

浏览器兼容性

基于 jQuery 3.x 或 4.x 版本,本章介绍的 jQuery 字符串操作和 jQuery 数据操作相关方法的兼容性如下。对于 4.x 版本,已移除对 IE 10 及以下版本的支持。

浏览器类型最低兼容版本(基于 jQuery 3.x/4.x)
PC 端
Chrome60+ (当前及先前主要版本)
Edge15+ (基于 Chromium)
Firefox55+ (当前及先前主要版本)
Opera47+ (当前及先前主要版本)
Safari10+ (当前及先前主要版本)
移动端
Chrome Android100+ (当前版本)
Firefox for Android100+ (当前版本)
Opera Android64+ (当前版本)
Safari on iOS10+
Samsung Internet6.2+
WebView Android100+ (当前版本)
WebView on iOS10+

掌握这些 jQuery 字符串操作和 jQuery 数据操作的工具与技巧,能够有效简化日常开发任务。无论是处理用户输入、准备 Ajax 数据,还是在元素上存储状态,这些方法都提供了清晰且跨浏览器的解决方案。理解它们的用法,尤其是在 jQuery 版本演进中的变化,有助于编写更健壮和易于维护的代码。