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)
有什么想法解决这个问题吗?基本上我认为与下拉列表相关的事件不会被复制...谢谢
假设每个克隆元素只有一个下拉菜单,您可以使用
$('#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/
| 归档时间: |
|
| 查看次数: |
2706 次 |
| 最近记录: |