Javascript 选择标记中最后附加的选项始终成为其值
在jquery的帮助下,我正在js中构建一个select元素。我首先构建select标记,然后将options标记附加到它。进行此操作时,我在构建时将选定属性设置为选项标记之一。即使如此,无论哪个选项标记具有选定属性,最后附加的选项似乎都会作为选择字段的值。这种情况只有在Firefox、chrome和IE中才能正常工作。 这是我没有理解的东西还是一个已知的问题 Html JSJavascript 选择标记中最后附加的选项始终成为其值,javascript,jquery,Javascript,Jquery,在jquery的帮助下,我正在js中构建一个select元素。我首先构建select标记,然后将options标记附加到它。进行此操作时,我在构建时将选定属性设置为选项标记之一。即使如此,无论哪个选项标记具有选定属性,最后附加的选项似乎都会作为选择字段的值。这种情况只有在Firefox、chrome和IE中才能正常工作。 这是我没有理解的东西还是一个已知的问题 Html JS fiddle link此代码应该做什么 var a = $("#test").children().get(); $("
fiddle link此代码应该做什么
var a = $("#test").children().get();
$("#test").children().remove();
$("#test").append(a);
卸下它,它会按预期工作
编辑:
如果您需要我删除的代码,可以通过以下方式进行修改:
var a = $("#test").html();
$("#test").children().remove();
$("#test").html(a);
在这里拉小提琴:
这样,您就不会在选择属性的过程中失去控制
编辑2:
您甚至可以克隆这些子项以获得它们的精确副本:
var $ =jQuery.noConflict();
$("#test").append("<option value='one' selected='selected'>one</option>");
$("#test").append("<option value='two' >two</option>");
$("#test").prepend("<option value='zero' >zero</option>");
var a = $("#test").children().clone();
$("#test").children().remove();
$("#test").append(a);
是的,我可以在Firefox中复制。也许您可以考虑这一点,并动态决定给定选定属性的最后一个选项是什么。如果查看选项:从dom中删除元素后的选定过滤器如果删除部分被注释,则选项:选定将给出1个结果,否则3。。。那是什么?@ArunPJohny这不管用FF@Jonathan我知道。。。。这只是一个演示。。。问题不在于选择了最后一个附加项。。。将标记为选定的选项之后的所有选项从列表中删除后,将标记为选定dom@ArunPJohny这就是为什么他应该使用克隆人。查看我的答案编辑。您好,我理解删除子项并再次添加它是没有意义的。这基本上是为了在选项中保持一些秩序,我相信我只是用一种简单的方式模拟它来描述我的问题。在实际的代码中,我们根据许多检查动态添加选项,我想知道的是,为什么它必须以这样的方式而不是以子项的方式运行。选择上的get.html可以维护属性,并且工作正常。
var a = $("#test").html();
$("#test").children().remove();
$("#test").html(a);
var $ =jQuery.noConflict();
$("#test").append("<option value='one' selected='selected'>one</option>");
$("#test").append("<option value='two' >two</option>");
$("#test").prepend("<option value='zero' >zero</option>");
var a = $("#test").children().clone();
$("#test").children().remove();
$("#test").append(a);