如何使用javascript更改asp表单加载上的选择下拉顺序

时间:2017-06-27 04:23:08

标签: javascript jquery vb.net

我的代码:

    arrayKeys = dictCatProd.Keys       
    for each k in arrayKeys

        Response.write(vbTab & vbTab & "catprod[""" & k & """] = [];" & vbcrlf)
        Response.write(vbTab & vbTab & "catNames[""" & k & """] = """ & dictCategories(cint(k)) & """;" & vbcrlf)
        prods = Split(dictCatProd(k), "|")

        for each p in prods


            if Trim(p)<>"" then
                Response.write(vbTab & vbTab & "prodNames[""" & Trim(p) & """] = """ & dictProducts(cint(Trim(p))) & """;" & vbcrlf)
                Response.write(vbTab & vbTab & "catprod[""" & k & """].push(" & Trim(p) & ");" & vbcrlf)

            end if
        next

        'append the categories to the category dropdown

 $("#catSel").append("<option value='" + <%=k %> + "'>"+ catNames[<%=k %>] + "</option>"); 

我的问题是:

当下拉绑定时,我想要改变第5个位置的项目顺序应该进入第2个位置。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

您的问题没有被标记&#34; jQuery&#34;,但您似乎确实在代码中使用了jQuery,因此我建议使用jQuery's .insertBefore() method。该方法可用于插入新内容,但如果目标是单个元素并且插入的项已经存在于DOM中,则该元素已移动

因此,在您现有的代码之后,应该执行以下操作。请注意,就.eq() method而言,元素索引从零开始,因此您的第五和第二个元素具有索引41

var options = $("#catSel option")
options.eq(4).insertBefore(options.eq(1))

如果你不能使用jQuery,你可以做一些类似于上面的事情,但使用标准DOM .insertBefore() method

&#13;
&#13;
var select = document.getElementById("catSel")
select.insertBefore(select.options[4], select.options[1])
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="catSel" multiple size="6">
  <option value="1">First</option>
  <option value="2">Second</option>
  <option value="3">Third</option>
  <option value="4">Fourth</option>
  <option value="5">Fifth</option>
  <option value="6">Sixth</option>
</select>
&#13;
&#13;
&#13;

请注意,在 parent 元素上调用DOM方法,但是在要移动的元素上调用jQuery方法。

(我使用了带有multiple属性的硬编码选择元素,仅用于演示目的。)