LayUI 到 Bootstrap:JavaScript 代码重构实现模态框、复制功能与防红域名选择逻辑
将 LayUI 的 JavaScript 代码重构成 Bootstrap 的 JavaScript 代码,主要涉及 UI 组件的替换和事件绑定的调整。以下是重构后的代码: ```javascript function turl() { var id = $(this).data('id'); var url1 = "http://{$safe_url}/safe/index?id=" + id; var qrUrl = "/qrcode.php?size=290x290&data=" + url1; var modalContent = '<div class="modal-dialog">' + '<div class="modal-content">' + '<div class="modal-header">' + '<h5 class="modal-title">提链</h5>' + '<button type="button" class="close" data-dismiss="modal" aria-label="Close">' + '<span aria-hidden="true">×</span>' + '</button>' + '</div>' + '<div class="modal-body">' + '<div style="padding: 15px;">' + '<div style="margin-bottom: 10px;">' + '<div style="font-weight: bold; margin-bottom: 5px;">原始链接:</div>' + '<div style="word-break: break-all;">' + '<a href="' + url1 + '" target="_blank" style="color: #1E9FFF;">' + url1 + '</a>' + '</div>' + '</div>' + '<div id="domain-select-container"></div>' + '<div id="final-url" style="margin: 10px 0;"></div>' + '<div style="text-align: center; margin: 10px 0;">' + '<img src="' + qrUrl + '" alt="QR Code" style="width: 290px; height: 290px;"><br>' + '</div>' + '<div style="text-align: center; padding: 20px 0;">' + '<button id="copyBtn" class="btn btn-primary" data-clipboard-text="' + url1 + '">复制链接</button>' + '</div>' + '</div>' + '</div>' + '</div>' + '</div>'; var modal = $(modalContent).appendTo('body').modal({ show: true }); // 初始化复制功能 var clipboard = new ClipboardJS('#copyBtn'); clipboard.on('success', function(e) { alert('复制成功'); e.clearSelection(); }); clipboard.on('error', function() { alert('复制失败,请手动复制'); }); $.get("{:url('wxgroup/getDomains')}", function(res) { if (res.code == 1 && res.data.length > 0) { var domainSelect = '<div style="margin-bottom: 10px;">' + '<div style="font-weight: bold; margin-bottom: 5px;">选择防红域名:</div>' + '<select id="domain-select" class="form-control">' + '<option value="">请选择防红域名</option>'; res.data.forEach(function(domain) { domainSelect += '<option value="' + domain.domain + '">' + domain.domain + '</option>'; }); domainSelect += '</select></div>'; $('#domain-select-container').html(domainSelect); $('#domain-select').on('change', function() { var domain = $(this).val(); if (domain) { var base64Url = btoa(url1); var finalUrl = 'http://' + domain + '?c=' + base64Url; $('#final-url').html( '<div style="font-weight: bold; margin-bottom: 5px;">最终链接:</div>' + '<div style="word-break: break-all;">' + '<a href="' + finalUrl + '" target="_blank" style="color: #1E9FFF;">' + finalUrl + '</a>' + '</div>' ); $('#copyBtn').attr('data-clipboard-text', finalUrl); modal.find('img').attr('src', "/qrcode.php?size=290x290&data=" + encodeURIComponent(finalUrl)); } else { $('#final-url').html(''); $('#copyBtn').attr('data-clipboard-text', url1); modal.find('img').attr('src', qrUrl); } }); } }); } ``` 代码逻辑点: 1. 模态框的创建与显示:使用 Bootstrap 的模态框组件替换 LayUI 的 `layer.open`,并通过 `modal({ show: true })` 显示模态框。 2. 复制功能的初始化:使用 `ClipboardJS` 初始化复制功能,并在成功或失败时显示相应的提示信息。 3. 防红域名选择逻辑:通过 `$.get` 获取域名列表,并在选择域名时生成最终的防红链接,同时更新二维码和复制按钮的链接。 ######[AI写代码神器 | 1083点数解答 | 2025-03-11 15:17:09]
- Layui框架微信群组信息管理HTML模板:代码分析、优化建议与注意要点(DeepSeek | 644点数解答 | 2025-03-11 15:42:55)243
- jQuery 实现:精准定位 id 17 的 Div 并点击首个 layui-tree-txt 标签及注意要点(字节豆包 | 289点数解答 | 2026-01-06 21:13:29)41
- jQuery 实现精准定位:点击 id 为 17 的 div 中首个 layui-tree-txt 标签及注意事项(字节豆包 | 350点数解答 | 2026-01-06 21:14:21)39
- 充值页面LayUI框架代码分析:问题、优化与逻辑要点(DeepSeek | 354点数解答 | 2025-05-05 02:54:04)191
- 代码揭秘:HTML引入Bootstrap CSS与图标库的含义及效果(DeepSeek | 224点数解答 | 2025-05-24 22:49:00)266
- 完整揭秘:数字电视用户管理系统界面代码及功能实现(DeepSeek | 921点数解答 | 2025-05-24 22:51:02)227
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)343
- 超详细:JDK安装及Windows系统环境变量设置全攻略 (阿里通义 | 376点数解答 | 2024-03-06 17:27:29)352
- 代码揭秘:话费订单管理页面的基础搭建(字节豆包 | 31点数解答 | 2024-10-28 18:03:44)259
- JavaScript 开发:手把手教你用 HTML 和 CSS 代码定义 Bootstrap 缩略图 (阿里通义 | 322点数解答 | 2023-11-09 01:24:14)298
- 探秘这段 HTML 代码背后的网页奥秘(字节豆包 | 51点数解答 | 2024-12-09 20:31:23)352
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)310