Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
纯JavaScript动态生成与初始化Bootstrap Toggle开关_创想鸟

纯JavaScript动态生成与初始化Bootstrap Toggle开关

纯JavaScript动态生成与初始化Bootstrap Toggle开关

本教程详细指导如何使用纯javascript动态创建并初始化bootstrap toggle开关。通过创建`input`元素并设置必要属性,然后利用jquery的`bootstraptoggle()`方法将其转换为功能完善的开关组件,实现页面元素的动态交互。

引言

在现代Web应用开发中,动态生成UI组件是常见的需求。Bootstrap Toggle是一个流行的jQuery插件,它能将标准的HTML复选框(checkbox)转换为美观且交互性强的开关按钮。本教程将深入探讨如何仅使用纯JavaScript(结合jQuery进行插件初始化)来动态创建这些Bootstrap Toggle开关,并将其添加到DOM中,使其功能正常。这对于需要根据用户操作或数据加载来动态渲染表单或设置选项的场景非常有用。

环境准备

要使用Bootstrap Toggle,您需要引入以下CSS和JavaScript库。请确保它们的加载顺序正确:

Bootstrap CSS: 提供基础样式。Bootstrap JS (需要jQuery): Bootstrap的核心JavaScript功能。Bootstrap Toggle CSS: 提供开关组件的特定样式。Bootstrap Toggle JS: 插件的核心逻辑,将checkbox转换为开关。

以下是推荐的CDN链接,您可以将其放置在HTML文件的

或标签内:

核心原理

Bootstrap Toggle的工作原理是将一个带有特定data-toggle=”toggle”属性的元素转换为一个视觉上更吸引人的开关组件。这个转换过程并非自动发生,而是在DOM加载完成后,通过调用jQuery插件方法$(selector).bootstrapToggle()来手动触发。

立即学习“Java免费学习笔记(深入)”;

因此,动态添加Bootstrap Toggle的关键步骤包括:

创建HTML元素: 使用JavaScript的document.createElement()方法创建一个元素。设置必要属性: 为新创建的input元素设置type=”checkbox”和data-toggle=”toggle”属性。您还可以设置其他自定义属性,如checked、data-onstyle、data-offstyle等。插入DOM: 将创建好的input元素添加到页面上的某个容器中。初始化插件: 使用jQuery选择器选中新插入的input元素,并调用bootstrapToggle()方法对其进行初始化,使其转换为功能性开关。

实现步骤与代码示例

我们将创建一个HTML容器,然后编写一个JavaScript函数来动态地创建并初始化Bootstrap Toggle开关。

HTML结构

首先,在您的HTML文件中定义一个空的div作为开关的宿主元素:

JavaScript函数

接下来,编写一个JavaScript函数,负责创建、配置和初始化开关。

/** * 动态添加并初始化一个Bootstrap Toggle开关。 * @param {string} hostElId 宿主元素的ID。 * @param {boolean} isChecked 开关的初始状态,默认为false。 * @param {string} onStyle 开启时的样式,默认为'primary'。 * @param {string} offStyle 关闭时的样式,默认为'light'。 */function addSwitch(hostElId, isChecked = false, onStyle = 'primary', offStyle = 'light') {  const host = document.getElementById(hostElId);  if (!host) {    console.error(`宿主元素ID为 '${hostElId}' 不存在。`);    return;  }  // 1. 创建 input 元素  const inputEl = document.createElement("input");  // 2. 设置必要属性  inputEl.setAttribute("type", "checkbox");  inputEl.setAttribute("id", `toggle-${Date.now()}`); // 确保ID唯一  inputEl.dataset.toggle = "toggle"; // 等同于 setAttribute("data-toggle", "toggle")  // 设置初始状态  if (isChecked) {    inputEl.setAttribute("checked", "true");  } else {    inputEl.removeAttribute("checked");  }  // 设置自定义样式  inputEl.dataset.onstyle = onStyle;  inputEl.dataset.offstyle = offStyle;  inputEl.dataset.on = "启用"; // 可以自定义显示文本  inputEl.dataset.off = "禁用";  // 3. 将元素添加到DOM  host.appendChild(inputEl);  // 4. 初始化插件  // 注意:此处需要使用jQuery来调用 bootstrapToggle() 方法  $(inputEl).bootstrapToggle();  console.log(`成功添加并初始化ID为 '${inputEl.id}' 的开关。`);}

完整示例代码

将所有代码整合到一个HTML文件中,您可以直接运行并查看效果。

            动态添加Bootstrap Toggle开关                            body {            padding: 20px;        }        #switch-host {            min-height: 50px; /* 确保容器可见 */            border: 1px dashed #ccc;            padding: 15px;            display: flex; /* 使用flex布局让开关并排显示 */            flex-wrap: wrap;            gap: 10px; /* 开关之间的间距 */        }        .toggle.btn { /* 调整动态生成开关的边距 */            margin-right: 10px;            margin-bottom: 10px;        }        

动态添加Bootstrap Toggle开关

点击下方按钮,动态生成并初始化一个Bootstrap Toggle开关。

/** * 动态添加并初始化一个Bootstrap Toggle开关。 * @param {string} hostElId 宿主元素的ID。 * @param {boolean} isChecked 开关的初始状态,默认为false。 * @param {string} onStyle 开启时的样式,默认为'primary'。 * @param {string} offStyle 关闭时的样式,默认为'light'。 */ function addSwitch(hostElId, isChecked = false, onStyle = 'primary', offStyle = 'light') { const host = document.getElementById(hostElId); if (!host) { console.error(`宿主元素ID为 '${hostElId}' 不存在。`); return; } // 1. 创建 input 元素 const inputEl = document.createElement("input"); // 2. 设置必要属性 inputEl.setAttribute("type", "checkbox"); inputEl.setAttribute("id", `toggle-${Date.now()}`); // 确保ID唯一 inputEl.dataset.toggle = "toggle"; // 等同于 setAttribute("data-toggle", "toggle") // 设置初始状态 if (isChecked) { inputEl.setAttribute("checked", "true"); } else { inputEl.removeAttribute("checked"); } // 设置自定义样式 inputEl.dataset.onstyle = onStyle; inputEl.dataset.offstyle = offStyle; inputEl.dataset.on = "启用"; // 可以自定义显示文本 inputEl.dataset.off = "禁用"; // 3. 将元素添加到DOM host.appendChild(inputEl); // 4. 初始化插件 // 注意:此处需要使用jQuery来调用 bootstrapToggle() 方法 $(inputEl).bootstrapToggle(); console.log(`成功添加并初始化ID为 '${inputEl.id}' 的开关。`); }

代码解析

document.getElementById(hostElId): 获取用于承载新开关的父元素。这是将新元素添加到DOM的起点。document.createElement(“input”): 创建一个新的HTML 元素。inputEl.setAttribute(“type”, “checkbox”): 将输入类型设置为复选框,这是Bootstrap Toggle的基础。inputEl.setAttribute(“id”, toggle-${Date.now()}`)`: 为每个动态创建的开关设置一个唯一的ID。这对于后续的JavaScript操作(如获取其状态)非常重要。inputEl.dataset.toggle = “toggle”: 使用dataset属性设置data-toggle=”toggle”。这是告诉Bootstrap Toggle插件需要处理这个元素的关键属性。inputEl.setAttribute(“checked”, “true”) 或 inputEl.removeAttribute(“checked”): 根据isChecked参数设置开关的初始状态。inputEl.dataset.onstyle = onStyle; inputEl.dataset.offstyle = offStyle;: 设置开关开启和关闭时的样式(例如,primary、success、danger、info、warning、light、dark)。host.appendChild(inputEl): 将新创建的input元素添加到宿主元素中,使其成为页面DOM的一部分。$(inputEl).bootstrapToggle(): 这是最关键的一步。 在input元素被添加到DOM之后,必须调用此jQuery方法来触发Bootstrap Toggle插件,将普通的复选框转换为功能完善的开关组件。如果没有这一步,您只会看到一个普通的HTML复选框。

自定义与配置

除了data-toggle和checked属性外,Bootstrap Toggle还支持多种data-*属性来定制开关的外观和行为:

data-on=”Text”: 开关开启时显示的文本。data-off=”Text”: 开关关闭时显示的文本。data-onstyle=”Style”: 开关开启时的Bootstrap样式(如primary, success, `danger等)。data-offstyle=”Style”: 开关关闭时的Bootstrap样式。data-size=”Size”: 开关的大小(如lg, sm, xs)。data-width=”Width”: 开关的宽度(像素)。data-height=”Height”: 开关的高度(像素)。

您可以通过inputEl.dataset.propertyName = “value”或inputEl.setAttribute(“data-property-name”, “value”)来设置这些属性。

注意事项

依赖加载顺序: 务必确保jQuery、Bootstrap JS和Bootstrap Toggle JS的加载顺序正确。jQuery必须在Bootstrap JS之前加载,而Bootstrap Toggle JS必须在Bootstrap JS之后加载。DOM就绪: 确保在尝试获取宿主元素或初始化开关之前,DOM已经加载完成。在标签底部或使用DOMContentLoaded事件监听器中执行JavaScript是最佳实践。唯一ID: 为每个动态生成的开关设置一个唯一的ID非常重要,尤其是在您需要通过JavaScript获取或操作特定开关时。性能考虑: 如果需要动态添加大量开关,考虑批量添加和初始化,以减少DOM操作和渲染开销。事件监听: 动态添加的开关,如果需要监听其状态变化(例如change事件),应使用事件委托(event delegation)的方式来绑定事件,而不是直接绑定到单个元素上。

// 示例:使用事件委托监听动态开关的状态变化$(document).on('change', '#switch-host input[type="checkbox"][data-toggle="toggle"]', function() {    console.log(`开关 ID: ${this.id}, 状态: ${$(this).prop('checked') ? '开启' : '关闭'}`);});

总结

通过本教程,您应该已经掌握了如何使用纯JavaScript动态创建并初始化Bootstrap Toggle开关。核心在于创建正确的元素,设置必要的data-toggle=”toggle”属性以及其他自定义属性,然后将其添加到DOM中,并最终使用$(element).bootstrapToggle()方法将其转换为功能性开关。遵循正确的依赖加载顺序和初始化步骤,可以确保您的动态UI组件在Web应用中正常工作。

以上就是纯JavaScript动态生成与初始化Bootstrap Toggle开关的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1529402.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
JavaScript 类中等待特定按键事件的实现方法
上一篇 2025年12月20日 21:05:45
JavaScript 中字符串转换为数字失败的解决方案
下一篇 2025年12月20日 21:06:00

相关推荐

  • 使用MockWebServer对FeignClient进行单元测试

    本文详细阐述了如何利用Spring Cloud LoadBalancer和MockWebServer对FeignClient进行高效单元测试。通过在测试配置中动态注册MockWebServer实例,并将其作为FeignClient的服务发现目标,开发者可以精确模拟后端API的行为,包括各种HTTP响…

    2026年9月22日
    000
  • 常见分布式任务调度工具浅析

    一、背景 在日常业务中,经常会遇到需要在特定时间执行任务或周期性执行任务的需求。这些任务通常被归类为定时任务。为了满足这种需求,各种任务调度框架应运而生,如Timer、ScheduledThreadPoolExecutor(没错,它也可以用于定时任务)、Quartz等。然而,随着分布式和微服务的发展…

    2026年9月22日
    100
  • 豫事办的密码怎么改

    首先通过个人中心修改密码或使用忘记密码功能重置。记得密码时,进入豫事办APP我的→设置→修改密码,输入原密码和新密码即可;忘记密码则在登录页点击“忘记密码”,输入手机号获取验证码后设置新密码完成重置。 如果您需要更新您的豫事办账户密码以确保账户安全,可以通过应用内设置直接修改,或在忘记密码时通过身份…

    2026年9月22日
    400
  • Canva中AI生成图片如何导出?教你快速保存设计作品的方法

    答案:Canva中导出AI生成图片的操作与普通图片相同,点击右上角“分享”按钮,选择“下载”,可选PNG、JPG、PDF、SVG、MP4或GIF等格式;为保证画质,建议优先选用PNG格式,避免有损压缩,同时选择高分辨率和合适尺寸,Pro用户可进一步调整质量与透明背景设置;除下载外,还可通过分享链接、…

    2026年9月22日
    800
  • VSCode安全更新机制解析

    VSCode通过自动检查、数字签名验证和用户可控策略确保更新安全。启动时后台定期HTTPS请求检查新版本,每日一次;安装包经平台特定签名(Windows Authenticode、macOS代码签名、Linux GPG)验证完整性;用户可选自动更新、提示或关闭,企业可集中管控;微软通过安全入口响应漏…

    2026年9月22日
    000
  • Linux系统中文件属性和权限实战操作

    Linux系统中文件属性和权限实战操作Linux系统中文件属性和权限实战操作Linux系统中文件属性和权限实战操作Linux系统中文件属性和权限实战操作

    —–原本今天的文章是昨天晚上就要更新的,但是由于昨天晚上下班回到住的地方,发现停电了,所以就没写成。今天是在上一篇文章–linux系统中文件类型的基础上,继续进行深入的学习。好了,直接开干。 一、文件的操作权限: 1、在这之前我想还是很有必要介绍对文件的操作权限(…

    2026年9月22日 • 用户投稿
    000
  • Hazelcast缓存数据未显示:排查与解决指南

    本文旨在解决在使用Spring Cache结合Hazelcast时,通过@CachePut等注解成功将数据放入缓存,但无法通过HazelcastInstance获取缓存数据的问题。文章将深入探讨可能的原因,并提供详细的配置步骤和代码示例,帮助开发者正确配置和使用Hazelcast缓存。 在使用Spr…

    2026年9月22日
    000
  • Laravel 8 登录后重定向至仪表盘的策略与实践

    本教程详细阐述了在 Laravel 8 中实现用户登录后重定向到仪表盘的多种策略。我们将探讨如何通过配置 LoginController 的 $redirectTo 属性、利用 RouteServiceProvider 定义常量以及在自定义登录方法中进行精确控制来管理重定向流程。文章还涵盖了相关中间…

    2026年9月22日
    000
  • 如何在iPhone情侣模式中启用视频通话?快速连接彼此的设置方法

    如何在iPhone情侣模式中启用视频通话?快速连接彼此的设置方法如何在iPhone情侣模式中启用视频通话?快速连接彼此的设置方法如何在iPhone情侣模式中启用视频通话?快速连接彼此的设置方法如何在iPhone情侣模式中启用视频通话?快速连接彼此的设置方法

    iPhone虽无官方“情侣模式”,但可通过FaceTime或微信、WhatsApp等第三方应用实现高质量视频通话。首选FaceTime,操作便捷、画质清晰,支持SharePlay共享影音,仅限苹果设备;跨平台可选微信、WhatsApp等,注重隐私可用Telegram。优化体验需稳定网络、良好光线与背…

    2026年9月22日 • 用户投稿
    200
  • Java中异常处理与方法返回值结合

    异常发生时不应返回默认值,而应通过抛出异常或使用Optional、自定义结果类等方式明确传递错误信息,确保调用方能正确处理失败情况,提升代码健壮性与可读性。 在Java中,异常处理与方法返回值的结合是一个常见的编程问题。理解它们之间的关系有助于写出更健壮、可读性更强的代码。当一个方法可能发生异常时,…

    2026年9月22日
    000
  • VSCode如何通过扩展实现Markdown预览 VSCode Markdown预览功能的配置方法

    安装“markdown all in one”或“markdown preview enhanced”等扩展;2. 安装后通过ctrl+shift+v打开预览;3. 在设置中配置预览样式、主题、字体等;4. 启用“auto show preview to side”实现自动预览;5. 开启“scro…

    2026年9月22日
    000
  • 谷歌浏览器安卓版如何清除数据_安卓版Chrome应用数据清理方法

    首先清除浏览数据可解决谷歌浏览器页面加载慢、自动填充错误等问题。通过Chrome设置菜单可一次性清除指定时间范围内的历史记录、Cookie及缓存;针对特定网站问题,可仅清除该站点的数据以保留其他登录状态;若问题严重,可通过手机系统设置中的应用管理清除Chrome的缓存或全部数据,以重置应用状态。 如…

    2026年9月22日
    000
  • E票电影app微信解绑教程

    E票电影app微信解绑操作指南: 1、启动应用后,选择底部菜单中的“我的”页面,接着点击“设置”图标。 2、在设置界面中,找到并进入“账户与安全”功能项。 3、进入绑定信息页面后,点击“已绑定”的微信账号,按照提示完成解绑操作。 以上就是E票电影app微信解绑教程的详细内容,更多请关注创想鸟其它相关…

    2026年9月22日
    100
  • 成都一青旅禁止40岁以上男性预订?店家回应

    近日,四川成都的一家青年旅舍因其一项特殊的预订规则而引发了网络热议。有网友发现,该青旅推出的4元特价房,竟明确禁止40岁以上的男性和30岁以上的女性进行预订。 特价房背后的“附加任务” 10月13日,记者联系了涉事的三家青旅。工作人员向记者证实了这一年龄限制的存在。他们解释称,这4元的特价并非简单的…

    用户投稿 2026年9月22日
    000
  • 华为天际通Go将支持eSIM:设备在路上了

    华为天际通Go将支持eSIM:设备在路上了华为天际通Go将支持eSIM:设备在路上了华为天际通Go将支持eSIM:设备在路上了华为天际通Go将支持eSIM:设备在路上了

    9月3日消息,今年的iphone 17 air将仅支持esim,彻底移除实体sim卡槽结构。随着新品发布日期的临近,国内esim政策的进展也愈发引人关注。 然而综合多方信息来看,iPhone 17 Air国行版本可能无法赶上首发,因前期在国内无法使用eSIM服务,导致该机型短期内难以在国内上市。 相…

    2026年9月22日 • 用户投稿
    000
  • VSCode配置C语言调试环境 从零开始VSCode搭建C开发工具

    要从零开始在#%#$#%@%@%$#%$#%#%#$%@_e2fc++805085e25c9761616c00e065bfe8中搭建c语言开发和调试环境,首先需安装vscode本体、c/c++编译器(如mingw或gcc)并配置系统环境变量,接着安装vscode的c/c++扩展,然后创建项目并编写c…

    2026年9月22日
    000
  • 递归实现列表排序检查与条件移除最大值

    本文详细介绍了如何使用Java递归方法处理整数列表。核心内容包括:首先检查列表是否已排序,如果已排序则直接返回false;如果未排序,则查找列表中的最大值。仅当最大值位于列表的起始或结束位置时,才将其移除并递归地继续处理列表。如果最大值位于列表中间,则打印当前列表并终止递归。 在数据处理和算法设计中…

    2026年9月22日
    000
  • 国泰航空“广州始发礼遇”限时开启,新增广州往返香港航班助力畅游亚洲

    落地即启程,中转再提速,轻松畅游亚洲 秋意正浓,正是踏上旅途的好时机。国泰航空为大湾区“1小时生活圈”注入全新活力——自2025年10月27日起,广州与中国香港之间的往返航班将加密至每日三班,并同步推出“广州始发礼遇”限时优惠活动,让旅客以更实惠的价格畅行亚洲热门目的地。 限时优惠抢先订 亚洲美景随…

    2026年9月22日
    100
  • VS Code中Dockerized PHP项目:解决PHP版本冲突的教程

    本教程旨在解决在VS Code中开发Dockerized PHP项目时,VS Code默认识别宿主机PHP版本而非容器内PHP版本的问题。核心解决方案是利用VS Code的Remote – Containers扩展,实现直接在Docker容器内部进行代码开发,从而确保VS Code及其所…

    2026年9月22日
    200
  • UC浏览器为什么无法登录某些网站账号_UC浏览器部分网站无法登录原因及对策

    首先关闭广告过滤功能,清除缓存与Cookie,关闭云端加速,切换网络或DNS,最后尝试桌面模式或其他浏览器解决UC浏览器登录无响应问题。 如果您尝试在UC浏览器中登录某个网站账号,但页面无响应或提示错误,则可能是由于浏览器的安全策略、缓存问题或设置限制导致无法正常加载登录界面。以下是解决此问题的步骤…

    2026年9月22日
    100

发表回复

登录后才能评论
关注微信