Jquery 无法使用.append()选项进行选择

Jquery 无法使用.append()选项进行选择,jquery,append,appendto,Jquery,Append,Appendto,我对.append函数有问题。 我在jquery中创建了一个元素,并将其附加到许多表行中,其中包含示例类: var $select = $('<select class="my-select" ><option></option></select>'); $('‪#‎mytable‬ tr.first_row td.first_cell').append($select.clone()); $('‪#‎mytable‬ tr.second_row

我对.append函数有问题。 我在jquery中创建了一个元素,并将其附加到许多表行中,其中包含示例类:

var $select = $('<select class="my-select" ><option></option></select>');
$('‪#‎mytable‬ tr.first_row td.first_cell').append($select.clone());
$('‪#‎mytable‬ tr.second_row td.first_cell').append($select.clone());
这是小提琴


有人知道为什么这不起作用吗?这看起来非常简单,但我无法解决这个问题,我希望有人能帮助我了解发生了什么。

似乎在stacksnippets中附加了

var$select=$; //定义变量“克隆”` var clone=$select.clone; var new_option=$.val'value'.text'text'; $select.appendnew_选项; $body.append$select; var new_option2=$.val'value'.text'text2'; clone.appendnew_选项2; $table tr.appendclone; 刚刚创建并添加到$select的新选项元素将被删除并添加到DOM上的.my select元素中。要避免这种情况,请按照下面的建议将克隆添加到$select

只要改变一下:

$select.append(option);
致:


使用字符串而不是jQuery对象,var$select=;$'‪‎空白表‬ tr.first_row td.first_cell'.追加$select;$'‪‎空白表‬ tr.second_row td.first_cell'.追加$select;您将附加$select的克隆元素,而不是$select本身,然后将选项附加到$select,而不是克隆element@Yuri如果您签入console,您会看到该选项被添加到$select中,只是该元素不是DOM的一部分。请参考克隆元素,请参阅来宾的答案。关于你的最后一条评论,我很困惑你的预期行为是什么?短语“不起作用”,通常伴随预期行为时是有意义的谢谢@A.Wolff和实际行为。现在我们都不知道你的问题是什么-当你需要的时候,它工作得很好。我现在可以看到混乱是如何来的——看看控制台输出Firebug Lite;这可能会产生误导。但是如果你看一下你的,都是文本。如果我必须将克隆附加到两个不同的行@Yuri,这就行不通了。append从DOM中删除元素并将其放置在元素中。append已调用。尝试克隆.clone at.second$table tr.second td.appendclone.clone;我做了一把相当复杂的小提琴,你可以看到我同样的错误。我做错了什么@尤里做了一把相当复杂的小提琴,在那里你可以看到我同样的错误。我做错了什么?什么是错误?是否在返回预期结果?如果单击“添加行”,将追加一个新的tr。如果单击“添加选项”选项元素被追加到“选择最近追加的tr”,请在添加选项后尝试添加新行。新的\u选项是在内部本地创建的。在侦听器上,我是否仍需要追加克隆?是的,您需要。实际上,它是本地的还是全球的并不重要。请参阅问题下方更新的演示和@guest271314的评论。请在此处回答。你的回答是正确的。谢谢@Yuri;就这么做了。看起来像是重复的。要删除这个混乱的问题吗
$select.find('option:last').after(new_option); //doesn't work
$select.find('option:last').before(new_option); //doesn't work
new_option.appendTo($select); //doesn't work
$select.append(option);
$select.append(option.clone());