克隆包含kendo输入的div

时间:2016-06-22 18:46:20

标签: javascript jquery html kendo-ui clone

我有一个应用程序,允许用户动态创建包含kendo输入的div。为此,我有一个包含多个剑道输入的div,我将其用作一种模板。当用户决定向页面添加一个部分时,我使用jquery.clone()克隆我的div。 UI中的一切看起来都很好,但由于剑道输入只在HTML中初始化一次然后被复制,因此输入不会被重建,因此初始ID不是唯一的,输入也不起作用。

我尝试通过

以编程方式修复此问题
var $kendoInputs = $$(".draggableContainer .k-input");
for (var j = 0; j < $kendoInputs.length; j++) {
    if ($($kendoInputs[j]).attr("id")) {
        var newid = "newid" + j;
        $($kendoInputs[j]).attr("id", newid).attr("name", newid);
    }
}

但由于输入已经初始化,因此在此时更改ID是无用的。有没有办法更改剑道输入的ID然后重建它?

对于长篇文章感到抱歉,并提前致谢

1 个答案:

答案 0 :(得分:1)

几乎那里:http://dojo.telerik.com/@Stephen/EWEna

尝试克隆kendo元素的基本输入(使用新的id)而不是kendo添加的所有元素。 然后获取原始窗口小部件的类型和选项,并使用原始选项将新元素初始化为原始类型。

var originalElement = $("#" + originalID);
var originalWidgetType = "kendo" + kendo.widgetInstance(originalElement).options.name;
var originalWidget = originalElement.data(originalWidgetType);

element[originalWidgetType](originalWidget.options);

我的dojo示例很接近...但由于某种原因,克隆的DatePickers太宽了......我还没有测试过所有可能的元素,但我认为它可以作为一个开始。

修改

我发现使用Kendo MVVM的这种技术似乎更好:http://jsfiddle.net/krustev/U6nSv/

这是我的解决方案(不确定如何信用)。

以下是我使用该技术更新的原始示例:http://dojo.telerik.com/@Stephen/aquRE