jQuery是一种方便快捷的Javascript库,常用于处理HTML文档的交互、事件处理和动画效果等。本文将介绍如何利用jQuery实现个人信息的增删改查功能。
一、准备工作
首先,需要有一个包含个人信息的HTML表格,可以手动编写或者使用模板引擎生成。假设我们的表格包含了以下列头和数据:
<table id="info-table"> <thead> <tr> <th>ID</th> <th>姓名</th> <th>性别</th> <th>年龄</th> <th>联系方式</th> <th>操作</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>张三</td> <td>男</td> <td>25</td> <td>138****1234</td> <td> <button class="edit-btn">编辑</button> <button class="delete-btn">删除</button> </td> </tr> <tr> <td>2</td> <td>李四</td> <td>女</td> <td>30</td> <td>139****5678</td> <td> <button class="edit-btn">编辑</button> <button class="delete-btn">删除</button> </td> </tr> ... </tbody> </table>
其次,需要一个表单用于添加和编辑信息。可以利用HTML构建表单,例如:
<form id="info-form"> <input type="hidden" id="info-id" value=""> <div> <label for="info-name">姓名:</label> <input type="text" id="info-name" name="name" required="required"> </div> <div> <label for="info-gender">性别:</label> <input type="radio" id="info-gender-male" name="gender" value="male" required="required"> <label for="info-gender-male">男</label> <input type="radio" id="info-gender-female" name="gender" value="female" required="required"> <label for="info-gender-female">女</label> </div> <div> <label for="info-age">年龄:</label> <input type="number" id="info-age" name="age" required="required"> </div> <div> <label for="info-phone">联系方式:</label> <input type="tel" id="info-phone" name="phone" required="required"> </div> <div> <button type="submit" id="submit-btn">提交</button> <button type="button" id="cancel-btn">取消</button> </div> </form>
其中,id为“info-id”的隐藏域用于记录正在编辑的信息的ID,value为空表示当前是添加操作,不为空表示当前是编辑操作。
二、添加信息
添加信息的操作比较简单,只需要监听表单的submit事件,获取表单数据并插入表格中即可。具体步骤如下:
$('#info-form').on('submit', function(e) { e.preventDefault(); // ... });
var formData = { name: $('#info-name').val(), gender: $('input[name="gender"]:checked').val(), age: $('#info-age').val(), phone: $('#info-phone').val() };
var newRow = $('<tr>') .append($('<td>').text(newId)) .append($('<td>').text(formData.name)) .append($('<td>').text(formData.gender === 'male' ? '男' : '女')) .append($('<td>').text(formData.age)) .append($('<td>').text(formData.phone)) .append($('<td>') .append($('<button>').addClass('edit-btn').text('编辑')) .append($('<button>').addClass('delete-btn').text('删除')) ); $('#info-table tbody').append(newRow);
其中,newId为新添加信息的ID,需要根据当前表格的最大ID加1生成。
三、编辑信息
编辑信息的操作比添加操作稍微复杂一些,需要先在表格中定位需要编辑的信息,然后将其数据填充至表单中,并监听表单的submit事件,完成更新后更新表格中原有的数据。具体步骤如下:
$('#info-table').on('click', '.edit-btn', function() { var row = $(this).closest('tr'); var id = row.find('td:first-child').text(); var name = row.find('td:nth-child(2)').text(); var gender = row.find('td:nth-child(3)').text() === '男' ? 'male' : 'female'; var age = row.find('td:nth-child(4)').text(); var phone = row.find('td:nth-child(5)').text(); $('#info-id').val(id); $('#info-name').val(name); $('input[name="gender"][value="' + gender + '"]').prop('checked', true); $('#info-age').val(age); $('#info-phone').val(phone); $('#submit-btn').text('更新'); });
$('#info-form').on('submit', function(e) { e.preventDefault(); var id = $('#info-id').val(); var formData = { name: $('#info-name').val(), gender: $('input[name="gender"]:checked').val(), age: $('#info-age').val(), phone: $('#info-phone').val() }; var row = $('#info-table').find('td:first-child').filter(function() { return $(this).text() === id; }).closest('tr'); row.find('td:nth-child(2)').text(formData.name); row.find('td:nth-child(3)').text(formData.gender === 'male' ? '男' : '女'); row.find('td:nth-child(4)').text(formData.age); row.find('td:nth-child(5)').text(formData.phone); $('#info-id').val(''); $('#info-name').val(''); $('input[name="gender"]').prop('checked', false); $('#info-age').val(''); $('#info-phone').val(''); $('#submit-btn').text('添加'); });
其中,利用find、filter和closest方法可以定位到需要编辑的行,并再次利用find方法获取该行中每一列的数据。
四、删除信息
删除信息相对简单,只需要在点击删除按钮时确认是否删除,并从表格中移除对应的行即可。具体步骤如下:
$('#info-table').on('click', '.delete-btn', function() { var row = $(this).closest('tr'); if (confirm('确定要删除该信息吗?')) { row.remove(); } });
其中,利用closest方法获取当前行,并利用remove方法将其从DOM树中移除。
到此为止,我们已经完成了个人信息的增删改查功能。完整的代码示例如下:
$(function() { $('#info-table').on('click', '.edit-btn', function() { var row = $(this).closest('tr'); var id = row.find('td:first-child').text(); var name = row.find('td:nth-child(2)').text(); var gender = row.find('td:nth-child(3)').text() === '男' ? 'male' : 'female'; var age = row.find('td:nth-child(4)').text(); var phone = row.find('td:nth-child(5)').text(); $('#info-id').val(id); $('#info-name').val(name); $('input[name="gender"][value="' + gender + '"]').prop('checked', true); $('#info-age').val(age); $('#info-phone').val(phone); $('#submit-btn').text('更新'); }); $('#info-form').on('submit', function(e) { e.preventDefault(); var id = $('#info-id').val(); var formData = { name: $('#info-name').val(), gender: $('input[name="gender"]:checked').val(), age: $('#info-age').val(), phone: $('#info-phone').val() }; if (id === '') { var newId = parseInt($('#info-table').find('td:first-child') .map(function() { return $(this).text(); }).get() .reduce(function(prev, curr) { return parseInt(prev) > parseInt(curr) ? prev : curr; })) + 1; var newRow = $('<tr>') .append($('<td>').text(newId)) .append($('<td>').text(formData.name)) .append($('<td>').text(formData.gender === 'male' ? '男' : '女')) .append($('<td>').text(formData.age)) .append($('<td>').text(formData.phone)) .append($('<td>') .append($('<button>').addClass('edit-btn').text('编辑')) .append($('<button>').addClass('delete-btn').text('删除')) ); $('#info-table tbody').append(newRow); } else { var row = $('#info-table').find('td:first-child').filter(function() { return $(this).text() === id; }).closest('tr'); row.find('td:nth-child(2)').text(formData.name); row.find('td:nth-child(3)').text(formData.gender === 'male' ? '男' : '女'); row.find('td:nth-child(4)').text(formData.age); row.find('td:nth-child(5)').text(formData.phone); $('#info-id').val(''); $('#info-name').val(''); $('input[name="gender"]').prop('checked', false); $('#info-age').val(''); $('#info-phone').val(''); $('#submit-btn').text('添加'); } }); $('#info-table').on('click', '.delete-btn', function() { var row = $(this).closest('tr'); if (confirm('确定要删除该信息吗?')) { row.remove(); } }); $('#cancel-btn').on('click', function() { $('#info-id').val(''); $('#info-name').val(''); $('input[name="gender"]').prop('checked', false); $('#info-age').val(''); $('#info-phone').val(''); $('#submit-btn').text('添加'); }); });
以上是jquery个人信息增删改查的详细内容。更多信息请关注PHP中文网其他相关文章!