2011-12-20 110 views
2

我有这个js代码添加(克隆)并删除一个元素。删除select,从克隆元素

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

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

    newElem.children(':text').val(''); 

    $('#input_' + num).after(newElem).find('#input_' + num +'> option:selected').removeAttr("selected"); 
    $('#btnDel1').prop('disabled', ''); 
    if (newNum == 4) $('#btnAdd1').prop('disabled', 'disabled'); 
}); 

不过,我想删除select="select"属性,从以前的元素克隆。

我想这样的事情,但没有奏效:

$('#input_' + num).after(newElem).find('#input_' + num +'> option:selected').removeAttr("selected"); 

演示here

感谢

回答

5

试试这个孤独:

$('option:selected', newElem).prop("selected", false); 

您的代码:

$('#input_' + num).after(newElem).find('#input_' + num +'> option:selected').removeAttr("selected"); 

把克隆选择原来的,但然后你在原始选择使用find搜索选定的选项。 find搜索儿童。克隆的select现在是原始的不是孩子的兄弟姐妹。

+0

谢谢,完美:) – Daniel 2011-12-20 16:26:25

+1

@Daniel如果您使用的是jQuery> = 1.6版本,请使用'.removeProp()'而不是'.removeAttr()'。 – JesseBuesking 2011-12-20 16:29:57

+2

@JesseB - 你确定吗?这是来自removeProp文档'注意:不要使用此方法删除本机属性,如选中,禁用或选中。这将完全删除该属性,一旦删除,不能再添加到元素。使用.prop()将这些属性设置为false。“# – 2011-12-20 16:32:12