如何使用 jquery 更改 HTML 元素的位置
How to change position of HTML elements using jquery
我关注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
,在第一个索引上包含 CABLEONE
,我想相应地更改这些标签的位置。目前,它将首先显示 CABLEONE
,然后显示 CHARTER
。我如何在 jQuery 中执行此操作?
我会这样做(前提是您有容器的 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);
}
}
您可以使用 $.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>
为了对元素重新排序,我们将获取它们在数组中的索引,并将它们放在 .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();
}
}
我关注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
,在第一个索引上包含 CABLEONE
,我想相应地更改这些标签的位置。目前,它将首先显示 CABLEONE
,然后显示 CHARTER
。我如何在 jQuery 中执行此操作?
我会这样做(前提是您有容器的 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);
}
}
您可以使用 $.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>
为了对元素重新排序,我们将获取它们在数组中的索引,并将它们放在 .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();
}
}