新闻中心
jQuery Select2在动态DOM元素上的正确初始化与应用

当在j*ascript中动态创建并添加新的html元素到dom时,例如表格行中的select下拉框,像select2这样的jquery插件不会自动对其生效。本文将详细讲解如何正确地在元素被添加到dom之后,通过调用select2()方法手动初始化这些动态元素,确保其样式和功能正常应用,并提供代码示例及常见错误修正。
引言:动态DOM与插件失效问题
在现代Web应用开发中,我们经常需要根据用户操作或数据变化动态地向页面添加内容。例如,在一个数据录入表格中,用户可能需要点击“添加”按钮来新增一行数据。如果新添加的行中包含需要特殊样式或功能的元素(如使用Select2插件美化的下拉框),开发者可能会发现这些插件并未自动作用于新元素。
这是因为大多数jQuery插件,包括Select2,在页面加载时会遍历DOM并绑定到匹配的选择器上。对于在页面加载后才通过J*aScript动态创建并添加到DOM的元素,这些插件并不知道它们的存在,因此不会自动应用其功能和样式。要解决这个问题,我们需要在元素被添加到DOM之后,手动触发插件的初始化方法。
核心原理:动态元素的手动初始化
解决Select2不作用于动态添加元素的核心原理很简单:在动态创建的 这样,Select2就会识别并美化这个新元素。
实战示例:为动态表格行中的Select2下拉框应用样式
以下是一个详细的示例,展示如何在点击“添加”按钮后,动态生成表格行,并在新行中的
察言观数AskTable
企业级AI数据表格智能体平台
78
查看详情
HTML 结构
首先,我们需要一个基本的HTML表格和一个用于添加行的按钮。
<table class="table table-striped" id="submissionTable">
<thead>
<tr>
<th>#</th>
<th>ITEM</th>
<th>QTY</th>
<th>MEASURE BY</th>
<th>UNIT PRICE</th>
<th>LINE TOTAL</th>
<th>操作</th>
</tr>
</thead>
<tbody class="table-border-bottom-0">
<!-- 初始行,如果需要可以为空或包含一个示例行 -->
<tr id="tablerow0"></tr>
</tbody>
</table>
<button id="add" class="btn btn-primary mt-3">添加新行</button>J*aScript 代码
接下来是关键的J*aScript部分。我们将修正原始代码中的语法错误,并确保Select2在正确的时间点被初始化。
$(function () {
let counter = 1; // 用于生成唯一ID和名称的计数器
// 示例下拉选项数据
let dropdownOptions = [
{ Value: '0', Text: '选项一' },
{ Value: '1', Text: '选项二' },
{ Value: '2', Text: '选项三' }
];
$("#add").click(function () {
// 1. 构建新行的HTML字符串
var newRowHtml =
'<tr id="tablerow' + counter + '"> ' +
'<td>' +
'<label id="CountItems' + counter + '"><strong>' + counter + '</strong></label>' +
'</td>' +
'<td width="40%">' +
// 修正:id属性的引号闭合位置和name/id的格式
'<select onchange="sendInfo(this)" class="form-select js-dropdown" data-id="' + counter + '" name="Item_Id[' + counter + ']" id="ItemId' + counter + '" required="required">' +
'</select>' +
'</td>' +
'<td width="10%">' +
'<input type="text" class="form-control" name="Qty[' + counter + ']" value="1" id="Qty' + counter + '" onchange="calQtyBase(this)" data-QtyId="' + counter + '" required="required" />' +
'</td>' +
'<td width="10%">' +
'<input type="text" class="form-control" name="MeasureBy[' + counter + ']" value="" id="MeasureBy' + counter + '" readonly />' +
'</td>' +
'<td width="20%">' +
'<input type="text" class="form-control" name="Unit_Price[' + counter + ']" value="0.00" id="UnitPrice' + counter + '" onchange="priceBase(this)" data-PriceId="' + counter + '" required="required" />' +
'</td>' +
'<td width="20%">' +
'<input type="text" class="form-control&quo
t; name="Line_Total[' + counter + ']" value="0.00" id="LineTotal' + counter + '" required="required" />' +
'</td>' +以上就是jQuery Select2在动态DOM元素上的正确初始化与应用的详细内容,更多请关注其它相关文章!
# 如何用
# 延吉网站优化报价
# 唐山seo拓
# 泉港网站推广报价表
# 临时营销号怎么做推广
# 竞价网站推广平台
# 湘潭微信营销推广公司
# 怎样在学校做营销推广
# 企业营销号要怎么推广
# 网站推广优化哪里有专业
# 熊猫的营销推广
# 加载
# 是一个
# 如何实现
# javascript
# 如何使用
# 绑定
# 下拉框
# 可以使用
# 对其
# 化与
# red
# html元素
# 应用开发
# js
# html
# jquery
# java
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
c++如何实现一个简单的ECS框架_c++数据驱动设计与游戏开发
多闪网页版在线观看免费入口_多闪官网访问入口
MAC怎么安装Homebrew包管理器_MAC为开发者和高级用户安装命令行工具
Lar*el用户头像管理:实现图片缩放、存储与旧文件安全删除的最佳实践
优化MinIO list_objects_v2 操作的性能瓶颈与最佳实践
Win10系统怎么查看已安装更新_Win10卸载有问题的更新补丁
TikTok搜索结果不显示如何解决 TikTok搜索刷新优化方法
C++如何解决segmentation fault_C++段错误调试与原因分析
网易大神账号申诉需要多久_网易大神账号申诉流程说明
Safari怎么安装扩展程序 浏览器插件安装与管理方法【详解】
C++的std::mdspan是什么_C++23中用于操作多维数组的非拥有视图
谷歌google账号怎么注册账号 谷歌账号注册官方流程
顺丰快递查单号物流信息 顺丰快递小程序查询入口
拼多多购物车商品数量无法修改如何处理 拼多多购物车操作优化方法
解决macOS上安装pyhdf时‘hdf.h’文件缺失的编译错误
曝R星经典之作开发图 设计简陋但信息密集!
使用Python高效删除Word宏并转换DOCM为DOCX格式
MAC怎么在地图App里使用“四处看看”_MAC体验部分城市的3D实景街景
蛙漫漫画官网在线入口 蛙漫全本漫画免费阅读平台
解决Flask中Quill编辑器内容提交失败及TypeError的指南
J*aScript实现动态背景色下的文本与按钮颜色自适应调整
如何高效处理PHP中的Excel数据导入导出?PortPHP/Spreadsheet助你轻松搞定!
如何在低配置电脑上搭建轻量级J*a环境_占用更小的环境选择技巧
Angular Material 垂直步进器:实现底部到顶部排序的教程
PHP高效扁平化嵌套数组:使用array_merge与数组解包操作符
qq邮箱日历功能怎么用_创建日程与会议邀请的技巧
如何在复杂的电商平台中优雅地管理共享资源并确保正确重定向,使用spryker-shop/resource-share-page模块助你一臂之力
Lar*el如何正确地在控制器和模型之间分配逻辑_Lar*el代码职责分离与架构建议
如何使 Jest 模拟函数默认抛出错误以提高测试效率
CSS Flexbox如何实现多行排列_flex-wrap wrap自动换行显示
提升Kafka消费者健壮性:会话超时处理与消息处理语义
2026年发布! 美少女养成动作RPG《神剑少女战记》发布实机演示
夸克浏览器图书入口 夸克手机浏览器阅读入口
微信群消息显示延迟如何解决 微信群消息刷新优化方法
lar*el怎么安全地存储和获取配置文件中的敏感信息_lar*el敏感信息安全存储方法
J*aScript Promise链中如何正确终止后续.then执行并处理错误
ArrayList与LinkedList操作复杂度详解:遍历与修改
海棠电脑版入口_通过电脑访问海棠官网阅读
在python-socketio事件处理器中安全访问Flask应用上下文
小猿搜题在线学习页面在哪_小猿搜题在线学习中心入口
qq浏览器如何查看和导出已保存的密码 qq浏览器密码管理器数据备份教程
J*aScript动态修改指定div内所有a标签样式指南
QQ邮箱网页版邮箱入口 QQ邮箱官方登录平台
2306选座时如何选靠窗位置_12306选座靠窗座位查看方法解析
将HTML动态表格多行数据保存到Google Sheet的教程
QQ邮箱网页版快速登录 QQ邮箱邮箱账号官方入口地址
快手网页版在线登录 快手网页版官网入口快速访问
Python:递归比较文件夹内容并找出特定类型文件的差异
漫蛙2网页版漫画入口 漫蛙漫画在线官方登录
荣耀Play7TPro怎样在信息App置顶客服对话_iPhone荣耀Play7TPro信息App置顶客服对话【优先查看】


2025-10-14
浏览次数:次
返回列表
t; name="Line_Total[' + counter + ']" value="0.00" id="LineTotal' + counter + '" required="required" />' +
'</td>' +