具有所有嵌套元素的 Jquery Clone 对象

标签 jquery jquery-mobile clone

我想克隆一个 JQM 单选选项并将其插入到末尾。问题是 clone() 不会复制所有嵌套元素(动态生成)。它只复制第一个 child ,而不是所有后代。单选选项生成的内容包含也具有后代元素的标签元素,但由于某种原因它们不会克隆。

这是 fiddle http://jsfiddle.net/aSKBW/7/

最佳答案

.clone() 不会截断您的选择,而是您:)。当你这样做时:

new_option.find('label').text('Red');

您正在覆盖 label 元素的 HTML 结构,如下所示:

<label for="sky-color-2" data-theme="c" class="ui-btn ui-btn-icon-left ui-radio-off ui-corner-bottom ui-controlgroup-last ui-btn-up-c">
    <span class="ui-btn-inner ui-corner-bottom ui-controlgroup-last">
        <span class="ui-btn-text">Green</span>
        <span class="ui-icon ui-icon-radio-off ui-icon-shadow"></span>
    </span>
</label>

在你搞乱 .text() 函数之后,它看起来像这样:

<label for="sky-color-2" data-theme="c" class="ui-btn ui-btn-icon-left ui-radio-off ui-corner-bottom ui-controlgroup-last ui-btn-up-c">Red</label>

修复方法是定位 .ui-btn-text 元素并更改其文本:

new_option.find('.ui-btn-text').text('Red');

这是 JSFiddle 的更新版本:http://jsfiddle.net/aSKBW/13/

不要感觉太糟糕,这是习惯 jQuery Mobile 以及它如何向 DOM 添加如此多的结构时非常常见的错误。

关于具有所有嵌套元素的 Jquery Clone 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10237378/

相关文章:

javascript - 如何在每个X声音上播放音频?在JavaScript中

css - jQuery Mobile 尺寸太小,无法在设备中正常工作

javascript - jquerymobile slider 和断步属性

Jquery Mobile - 如何使用 Jquery 小部件工厂在 mobileinit 上运行插件

java - 如何制作 java 扫描仪的副本?

javascript - 在 HTML 上提交时防止刷新

JQuery .isNumeric

jquery - 将 HTML 保存到文件

c# - 克隆对象的好方法

javascript - jquery.one ("click",函数())