【发布时间】:2013-11-27 07:24:40
【问题描述】:
我正在使用 Kendo UI 2013.Q2。
我的页面正在加载多个模式弹出窗口(页面内 div 元素)。内容是从带有 ajax 请求的部分视图加载的。因此,如果我的部分视图内容包含剑道组件,则第二个弹出窗口无法初始化剑道元素,因为它们的 ID 与前一个模式弹出窗口中的元素相同。
有什么方法可以修改 jQuery 选择器以进行剑道初始化,这样我就可以在选择器中指定父窗口元素。
MVC 代码:
@(Html.Kendo().NumericTextBoxFor(m => m.DemirbasInfo.SicilSiraNo)
.Decimals(0).Format("{0:#}")
.Min(0).Max(int.MaxValue)
.Spinners(false))
呈现为:
jQuery(function(){jQuery("#DemirbasInfo_SicilSiraNo").kendoNumericTextBox({"format":"{0:#}","spinners":false,"decimals":0});});
我想修改为:
jQuery(function(){jQuery("#ModalWin_2 #DemirbasInfo_SicilSiraNo").kendoNumericTextBox({"format":"{0:#}","spinners":false,"decimals":0});});
2020 年更新
这个问题是针对主页中的多个模式同时提出的,例如为不同的数据库记录显示并排的多个窗口。我已经找到了一个使用<iframe> modals 的解决方案。但最好的做法是永远不要从一开始就使用 MVC 助手。
如果您一次使用一个模态窗口,只需简单地销毁之前的模态内容,这样剑道元素就会被销毁。然后重新打开第二个模态。
【问题讨论】:
-
不能给他们唯一的ID吗?我们在使用网格和 signalR 时遇到了类似的问题。创建具有相同 ID 的元素时,它们不会初始化。因此,我们根据某些模型或其他条件为每个元素赋予一个唯一的 ID。
-
@NicklasWinger 我考虑过这个。稍后我们主要使用选择器(选择元素、禁用、启用、编辑、保存等)制作大量的 javascript 和 jquery 编码(选择元素、禁用、启用、编辑、保存等)根据模型数据提供唯一的元素 id 来实现这些操作非常复杂。
标签: jquery asp.net-mvc kendo-ui selector