Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.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 选择标记中最后附加的选项始终成为其值_Javascript_Jquery - Fatal编程技术网

Javascript 选择标记中最后附加的选项始终成为其值

Javascript 选择标记中最后附加的选项始终成为其值,javascript,jquery,Javascript,Jquery,在jquery的帮助下,我正在js中构建一个select元素。我首先构建select标记,然后将options标记附加到它。进行此操作时,我在构建时将选定属性设置为选项标记之一。即使如此,无论哪个选项标记具有选定属性,最后附加的选项似乎都会作为选择字段的值。这种情况只有在Firefox、chrome和IE中才能正常工作。 这是我没有理解的东西还是一个已知的问题 Html JS fiddle link此代码应该做什么 var a = $("#test").children().get(); $("

在jquery的帮助下,我正在js中构建一个select元素。我首先构建select标记,然后将options标记附加到它。进行此操作时,我在构建时将选定属性设置为选项标记之一。即使如此,无论哪个选项标记具有选定属性,最后附加的选项似乎都会作为选择字段的值。这种情况只有在Firefox、chrome和IE中才能正常工作。 这是我没有理解的东西还是一个已知的问题

Html

JS


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);