我的代码:
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个位置。我怎么能这样做?
答案 0 :(得分:0)
您的问题没有被标记&#34; jQuery&#34;,但您似乎确实在代码中使用了jQuery,因此我建议使用jQuery's .insertBefore()
method。该方法可用于插入新内容,但如果目标是单个元素并且插入的项已经存在于DOM中,则该元素已移动。
因此,在您现有的代码之后,应该执行以下操作。请注意,就.eq()
method而言,元素索引从零开始,因此您的第五和第二个元素具有索引4
和1
。
var options = $("#catSel option")
options.eq(4).insertBefore(options.eq(1))
如果你不能使用jQuery,你可以做一些类似于上面的事情,但使用标准DOM .insertBefore()
method:
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;
请注意,在 parent 元素上调用DOM方法,但是在要移动的元素上调用jQuery方法。
(我使用了带有multiple
属性的硬编码选择元素,仅用于演示目的。)