我有以下HTML:
<div id="ServiceProvider" class="main_filter" name="filterDiv">
<div class="filter_chkbox_div" style="display:none">
<label class="ATT">AT&T</label>
</div>
<div class="filter_chkbox_div" style="display:none">
<label class="CABLEONE">Cable One</label>
</div>
<div class="filter_chkbox_div" style="display:none">
<label class="CABLEONEv6">Cable Onev6</label>
</div>
<div class="filter_chkbox_div" style="display:none">
<label class="CHARTER">Charter</label>
</div>
</div>
在运行时,我只显示我在数组providerCodes
jQuery代码
for (var i = 0; i < providerCodes.length; i++) {
var providerCheckBox = $("#" + providerCodes[i]);
if (providerCheckBox.length > 0) {
$(providerCheckBox).parent().show();
}
}
现在我想根据我在providerCodes
中收到的订单来定位这些标签。例如,如果providerCodes
数组在第0个索引上包含CHARTER
而在第1个索引上包含CABLEONE
,我想相应地更改这些标签的位置。目前,它将首先显示CABLEONE
,然后显示CHARTER
。我怎么能在jQuery中做到这一点?
答案 0 :(得分:1)
我会这样做(前提是你有容器的div选择器):
var containerSelector = $("<container-selector>");
for (var i = 0; i < providerCodes.length; i++) {
var providerCheckBox = $("#" + providerCodes[i]);
if (providerCheckBox.length > 0) {
$(providerCheckBox).parent().show().detach().appendTo(containerSelector);
}
}
答案 1 :(得分:0)
您可以使用$.clone()
首先克隆所有隐藏的div
然后empty
容器,然后循环输入数组并将这些数据附加回容器并使其可见。最后附加div
不属于输入数组的剩余class
:
$(document).ready(function(){
var providerCodes = ["CHARTER","CABLEONE "] ;
var clonnedObject = $(".mycontainer").clone();
$(".mycontainer").empty();
for (var i = 0; i < providerCodes.length; i++) {
var providerCheckBox = $(clonnedObject).find("." + providerCodes[i]);
if (providerCheckBox.length > 0) {
$(providerCheckBox).parent().appendTo(".mycontainer").show();
}
}
$(clonnedObject).children().appendTo(".mycontainer");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div class="mycontainer">
<div class="filter_chkbox_div" style="display:none">
<label class="ATT">AT&T</label>
</div>
<div class="filter_chkbox_div" style="display:none">
<label class="CABLEONE">Cable One</label>
</div>
<div class="filter_chkbox_div" style="display:none">
<label class="CABLEONEv6">Cable Onev6</label>
</div>
<div class="filter_chkbox_div" style="display:none">
<label class="CHARTER">Charter</label>
</div>
</div>
答案 2 :(得分:0)
要重新排序元素,我们会将它们索引到数组中并将它们放在.filter_chkbox_div
var providerCodes = ["CABLEONEv6","CABLEONE"];
for (var i = 0; i < providerCodes.length; i++) {
var providerCheckBox = $("." + providerCodes[i]);
if (providerCheckBox.length > 0) {
$('.filter_chkbox_div').eq(i).before(providerCheckBox.parent());
providerCheckBox.parent().show();
}
}