Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 jQuery移动特定选项位于选择的顶部(下拉)_Javascript_Jquery_Html - Fatal编程技术网

Javascript jQuery移动特定选项位于选择的顶部(下拉)

Javascript jQuery移动特定选项位于选择的顶部(下拉),javascript,jquery,html,Javascript,Jquery,Html,我基本上是尝试从选择中选择一个特定的选项,并将其移动到列表的顶部。我现在想做的就是这样 $("select[name=list]").find('option[value="car"]').insertBefore($("select[name=list]").find('option:eq(1)')); 出于某种原因,它执行了两次,在顶部留下两个选项 <option value="car">Car</option> <option value="car">

我基本上是尝试从选择中选择一个特定的选项,并将其移动到列表的顶部。我现在想做的就是这样

$("select[name=list]").find('option[value="car"]').insertBefore($("select[name=list]").find('option:eq(1)'));
出于某种原因,它执行了两次,在顶部留下两个选项

<option value="car">Car</option>
<option value="car">Car</option>
汽车
汽车
不知道我做错了什么,也许有人知道

谢谢。

:等式(1)将选择第二个元素,而不是第一个元素。除此之外,您发布的代码应该可以正常工作:

var $select = $("#mySelect");
$mySelect.find('option[value="car"]')
         .insertBefore($mySelect.find('option:eq(1)'));
试试这个

$("select[name=list]").find('option[value="car"]').prependTo($("select[name=list]"));
$("select[name=list]").val('car')

从jQuery文档中:

如果以这种方式选择的元素被插入到DOM中其他位置的单个位置,它将在目标(未克隆)之前移动,并返回由插入元素组成的新集合

[……]

但是,如果有多个目标元素,则在第一个目标元素之后,将为每个目标创建插入元素的克隆副本,并返回该新集合(原始元素加克隆)

所以,有一个线索!我的猜测是,你的选择器太过包容,你选择了不止一个元素。。。甚至在文档中的另一个选择列表中

您可以为您的示例提供更多的HTML代码,但让我展示一下如何做到这一点

Html

如果您注意我使用的选择器,我消除了选择多个元素的可能性,因此,遵守了我引用的第二部分的规则

示例:


我希望我的第一个答案能帮助你!:)

可能有两个问题

  • 如果插入一个新选项,则可能会有两个值相同的选项,因为您没有删除它

  • 第一项编号为“0”而不是“1”


  • 我不会在变量名前面使用$,除非我写PHP或其他东西……过去我也不会,但在jQuery上下文中,当变量包含一个非常有趣的jQuery对象时,人们会使用它,谢谢你的链接。这是有道理的。此解决方案会将新添加的选项附加到选择列表的顶部,但不会将其标记/显示为当前选定的选项。为此,您可以尝试添加以下行:
    var all_options=$(“select[name=list]”).html()
    $(“选择[名称=列表]”).html(“”)
    $(“选择[name=list]”)html(所有选项)
    
    <select id='MyNiceList'>
     <option value='my_option_1'>First Option</option>
     <option value='my_option_2'>Second Option</option>
     <option value='my_option_3'>Third Option</option>
    </select>
    
    $('#MyNiceList option[value="my_option_2"]').insertBefore('#MyNiceList option[value="my_option_1"]');
    
      var $el = $("select[name=list]").find('option[value="car"]');
      $("select[name=list]").find('option[value="car"]').remove();
      $("select[name=list]").find('option:eq(0)').before($el);