克隆时的问题 - jquery

use*_*318 6 javascript jquery events clone

我正在使用这个插件

现在我正在尝试克隆选择下拉列表.用于添加克隆div的按钮.因此,用户有一个初始下拉列表,但他可以添加更多.div被克隆了.

主要的问题是,当我克隆div时,下拉列表与初始下拉列表相关联,而no与新克隆相关联,即克隆.结果是:新克隆的div的所有下拉列表都有事件打开与第一个相关联的选择.

在此输入图像描述

调用插件的脚本

<script language="javascript" type="text/javascript">
$(document).ready(function() {
        $(".mydds").msDropDown();
})

</script>
Run Code Online (Sandbox Code Playgroud)

要克隆的脚本

<script type="text/javascript">
    $(document).ready(function() {
        $('#adicionar').live('click', function(){
            var num = $('.linguas').length;
            var newNum = new Number(num + 1);

            var newElem = $('#copiar' + num).clone(true).prop('id', 'copiar' + newNum);

            newElem.children(':text').prop('name', "myformdata[languages" + newNum + "]").prop('languages', 'languages' + newNum).val('');
            $('#copiar' + num).after(newElem);
            $('#apagar').prop('disabled', '');

        });

</script>
Run Code Online (Sandbox Code Playgroud)

有什么想法解决这个问题吗?基本上我认为与下拉列表相关的事件不会被复制...谢谢

Gab*_*oli 3

假设每个克隆元素只有一个下拉菜单,您可以使用

$('#adicionar').live('click', function(){
    var num = $('.linguas').length;
    var newNum = new Number(num + 1);

    var newElem = $('#copiar' + num).clone(true, true).attr('id', 'copiar' + newNum);

    var id = newElem.find('select').msDropDown().data('dd').get('id');

    newElem.find('[id]').each(function(){
        $(this).attr('id',this.id.replace(id,'customid_' + newNum,'g') );
    });


    $('#copiar' + num).after(newElem);

    newElem.find('select').msDropDown();
});
Run Code Online (Sandbox Code Playgroud)

问题是该插件为初始select元素提供了一个 id,并使用该 id 来创建其他元素并引用其相关的select.

您将需要修改所有这些 id 以及引用..(上面的代码就是这样做的..

演示 http://jsfiddle.net/gaby/CXBZR/3/