Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 克隆jquery时出现问题_Javascript_Jquery_Events_Clone - Fatal编程技术网

Javascript 克隆jquery时出现问题

Javascript 克隆jquery时出现问题,javascript,jquery,events,clone,Javascript,Jquery,Events,Clone,我在用这个 现在我正在做一个方法来克隆选择下拉列表。添加克隆div的按钮。 因此,用户有一个初始下拉列表,但他可以添加更多。div被克隆 主要的问题是,当我克隆div时,下拉列表与初始下拉列表关联,而与克隆的新下拉列表无关。结果是:新克隆的div的所有下拉列表都有打开与第一个div关联的select的事件 调用插件的脚本 <script language="javascript" type="text/javascript"> $(document).ready(function()

我在用这个

现在我正在做一个方法来克隆选择下拉列表。添加克隆div的按钮。 因此,用户有一个初始下拉列表,但他可以添加更多。div被克隆

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

调用插件的脚本

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

</script>
要克隆的脚本

<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>
有什么办法解决这个问题吗? 基本上,我认为与下拉列表相关的事件没有被复制。。。
感谢您在您的脚本中呼叫。clonetrue。此true参数用于克隆事件和数据

.clone[withDataAndEvents] withDataAndEvents:表示 事件处理程序是否应 与元素一起复制。截至 jQuery 1.4,元素数据将 也抄袭了


如果删除此项,或将其设置为false,这将停止将事件克隆到新的div上。

假设每个克隆的元素只有一个下拉列表,则可以使用

$('#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();
});
问题在于,插件为初始的select元素提供了一个id,并使用该id创建其他元素以及引用其相关的select元素

您需要修改所有这些ID以及引用。。上面的代码就是这样做的


演示

但我需要克隆事件。问题是div被克隆了,但是事件号没有。如果我按照你的建议去做,只有第一个下拉菜单起作用。我需要克隆div和事件。好吧,我很困惑。事件是否被复制?在您原来的问题中,您似乎在说它是复制的。@user455318:没问题。抱歉,我误解了这个问题。chrome、safari和IE8不起作用。只有在firefox中。几乎:@user455318,更新的代码使其更加详细和演示,而且现在似乎在所有浏览器中都能工作。。。