通过类名找到 div 并根据 onclick - jquery 将其替换为 div
find a div by classname and replace it with a div based on onclick - jquery
有8个div和一个空的div。还有 8 个复选框。最初显示 4 div,其余 display:none
,选中 4 个复选框,其余未选中
Fiddle link 是 here
这是我的代码
<div class="container">
<div class="empty" style="display:none;"></div>
<div class="content div_box_1">
<div class="box " style="background:black;"></div>
</div>
<div class="content div_box_2">
<div class="box " style="background:blue;"></div>
</div>
<div class="content div_box_3">
<div class="box " style="background:yellow;"></div>
</div>
<div class="content div_box_4">
<div class="box " style="background:orange;"></div>
</div>
<div class="content div_box_5">
<div class="box " style="background:pink; display:none;"></div>
</div>
<div class="content div_box_6">
<div class="box " style="background:indigo; display:none;"></div>
</div>
<div class="content div_box_7">
<div class="box " style="background:red; display:none;"></div>
</div>
<div class="content div_box_8">
<div class="box " style="background:skyblue; display:none;"></div>
</div>
<div class="checks">
<input type="checkbox" name="box1" checked value="1" class="css-checkbox"/>black
<input type="checkbox" name="box2" checked value="2" class="css-checkbox"/>blue
<input type="checkbox" name="box3" checked value="3" class="css-checkbox"/>yellow
<input type="checkbox" name="box4" checked value="4" class="css-checkbox"/>orange
<input type="checkbox" name="box5" value="5" class="css-checkbox"/>pink
<input type="checkbox" name="box6" value="6" class="css-checkbox"/>indigo
<input type="checkbox" name="box7" value="7" class="css-checkbox"/>red
<input type="checkbox" name="box8" value="8" class="css-checkbox"/>sky-blue
当我取消选中这 4 个复选框中的任何一个时,相应的 div 必须隐藏并且 class=empty
div 必须显示,例如,如果我用 value=2
取消选中复选框,那么必须隐藏带有 class="div_box_2
的 div,并且必须在那个地方显示带有 class=empty
的 div,然后再次选中带有 value=5 or value=6 or value=7 or value=8
的复选框时,div with class=empty
必须隐藏并且相应的 div with class=div_box_5 or class=div_box_6 or class=div_box_7 or class=div_box_8
必须显示在空 div.
的地方
这就像删除一个 div 并在那个地方放置一个默认的 div 并且当再次显示其他 div 时必须显示 div在默认位置 div
这怎么可能?
请任何人帮助。
提前谢谢你
您需要的是一个空容器,其中包含每个内容元素。您可以使用脚本添加它
//add an empty container to all content elements
$('.container .content').append('<div class="empty" style="display:none;"></div>');
$("input.css-checkbox:checkbox").click(function () {
var cval = $(this).val();
var $div = $(".div_box_" + this.value).slideToggle("fast");
$div.next()[this.checked ? 'slideUp' : 'slideDown']("fast");
})
演示:Fiddle
试试这个Demo
$(function() {
var selectCheckBox = $(".checks input:checkbox")
$(selectCheckBox).click(function() {
var checkingValue = $(this).val()
if(checkingValue == 1){
$('.div_box_1').toggle();
}
else if(checkingValue == 2){
$('.div_box_2').toggle();
}
else if(checkingValue == 3){
$('.div_box_3').toggle();
}
else if(checkingValue == 4){
$('.div_box_4').toggle();
}
})
var selectHiddenChecks = $('.checks input:checkbox')
$(selectHiddenChecks).click(function() {
var checkingValue = $(this).val();
if(checkingValue == 5) {
$('.div_box_5').toggle();
}
else if(checkingValue == 6) {
$('.div_box_6').toggle();
}
else if(checkingValue == 7) {
$('.div_box_7').toggle();
}
else if(checkingValue == 8) {
$('.div_box_8').toggle();
}
})
})
编辑
JSfiddle:click
我改变了一些东西:
- 我从您的 HTML 中删除了您的样式,并将其放入您的 CSS;
- 您想替换 div,因此无需隐藏任何内容;
让我解释一下JS:
var divs = [];
divs.push('<div class="content" id="empty">' +
'<div class="box div_box_0 empty"></div>' +
'</div>');
$('.box').each(function (index) {
divs[index+1] = $(this).parent();
$(this).parent().remove();
});
var selected = [];
var max_boxes = 4;
$('.css-checkbox').each(function () {
if ($(this).is(':checked') && selected.length < max_boxes) {
selected.push(divs[selected.length + 1]);
} else {
$(this).attr('checked', false);
}
});
while (selected.length < 4) {
selected.push(divs[0]);
}
for (var i in selected) {
$('.container').append(selected[i]);
}
$(".css-checkbox").click(function(){
if ($('.css-checkbox:checked').length > 4) {
$(this).attr('checked', false);
} else {
var cval = $(this).val();
var checked = $(this).is(':checked');
if (checked) {
var empty = $.inArray(divs[0], selected);
selected[empty] = divs[cval];
$('#empty').replaceWith(divs[cval]);
} else {
var filled = $.inArray(divs[cval], selected);
selected[filled] = divs[0];
$('.container').find(divs[cval]).replaceWith(divs[0]);
}
}
});
首先,我用 div 创建了一个数组,这样您就可以放置和替换它们。空的 div 必须手动输入,因为您不止一次需要这个。在数组中,您将获得对该元素的引用。接下来我从你的 html.
中删除每个 div
接下来我获取选定的框并将 div 按值放入选定的数组中。之后,我将前 4 个选定的 div 附加到容器中。
点击功能检查是否点击了 4 个框,当您点击第 5 个时,它会立即取消选中。接下来是检查以查看您是否选中或取消选中该复选框。当您检查它时,将第一个空的 div 替换为选定的 div。如果取消选中,它将用空 div.
替换选定的 div
有8个div和一个空的div。还有 8 个复选框。最初显示 4 div,其余 display:none
,选中 4 个复选框,其余未选中
Fiddle link 是 here 这是我的代码
<div class="container">
<div class="empty" style="display:none;"></div>
<div class="content div_box_1">
<div class="box " style="background:black;"></div>
</div>
<div class="content div_box_2">
<div class="box " style="background:blue;"></div>
</div>
<div class="content div_box_3">
<div class="box " style="background:yellow;"></div>
</div>
<div class="content div_box_4">
<div class="box " style="background:orange;"></div>
</div>
<div class="content div_box_5">
<div class="box " style="background:pink; display:none;"></div>
</div>
<div class="content div_box_6">
<div class="box " style="background:indigo; display:none;"></div>
</div>
<div class="content div_box_7">
<div class="box " style="background:red; display:none;"></div>
</div>
<div class="content div_box_8">
<div class="box " style="background:skyblue; display:none;"></div>
</div>
<div class="checks">
<input type="checkbox" name="box1" checked value="1" class="css-checkbox"/>black
<input type="checkbox" name="box2" checked value="2" class="css-checkbox"/>blue
<input type="checkbox" name="box3" checked value="3" class="css-checkbox"/>yellow
<input type="checkbox" name="box4" checked value="4" class="css-checkbox"/>orange
<input type="checkbox" name="box5" value="5" class="css-checkbox"/>pink
<input type="checkbox" name="box6" value="6" class="css-checkbox"/>indigo
<input type="checkbox" name="box7" value="7" class="css-checkbox"/>red
<input type="checkbox" name="box8" value="8" class="css-checkbox"/>sky-blue
当我取消选中这 4 个复选框中的任何一个时,相应的 div 必须隐藏并且 class=empty
div 必须显示,例如,如果我用 value=2
取消选中复选框,那么必须隐藏带有 class="div_box_2
的 div,并且必须在那个地方显示带有 class=empty
的 div,然后再次选中带有 value=5 or value=6 or value=7 or value=8
的复选框时,div with class=empty
必须隐藏并且相应的 div with class=div_box_5 or class=div_box_6 or class=div_box_7 or class=div_box_8
必须显示在空 div.
这就像删除一个 div 并在那个地方放置一个默认的 div 并且当再次显示其他 div 时必须显示 div在默认位置 div
这怎么可能? 请任何人帮助。 提前谢谢你
您需要的是一个空容器,其中包含每个内容元素。您可以使用脚本添加它
//add an empty container to all content elements
$('.container .content').append('<div class="empty" style="display:none;"></div>');
$("input.css-checkbox:checkbox").click(function () {
var cval = $(this).val();
var $div = $(".div_box_" + this.value).slideToggle("fast");
$div.next()[this.checked ? 'slideUp' : 'slideDown']("fast");
})
演示:Fiddle
试试这个Demo
$(function() {
var selectCheckBox = $(".checks input:checkbox")
$(selectCheckBox).click(function() {
var checkingValue = $(this).val()
if(checkingValue == 1){
$('.div_box_1').toggle();
}
else if(checkingValue == 2){
$('.div_box_2').toggle();
}
else if(checkingValue == 3){
$('.div_box_3').toggle();
}
else if(checkingValue == 4){
$('.div_box_4').toggle();
}
})
var selectHiddenChecks = $('.checks input:checkbox')
$(selectHiddenChecks).click(function() {
var checkingValue = $(this).val();
if(checkingValue == 5) {
$('.div_box_5').toggle();
}
else if(checkingValue == 6) {
$('.div_box_6').toggle();
}
else if(checkingValue == 7) {
$('.div_box_7').toggle();
}
else if(checkingValue == 8) {
$('.div_box_8').toggle();
}
})
})
编辑
JSfiddle:click
我改变了一些东西:
- 我从您的 HTML 中删除了您的样式,并将其放入您的 CSS;
- 您想替换 div,因此无需隐藏任何内容;
让我解释一下JS:
var divs = [];
divs.push('<div class="content" id="empty">' +
'<div class="box div_box_0 empty"></div>' +
'</div>');
$('.box').each(function (index) {
divs[index+1] = $(this).parent();
$(this).parent().remove();
});
var selected = [];
var max_boxes = 4;
$('.css-checkbox').each(function () {
if ($(this).is(':checked') && selected.length < max_boxes) {
selected.push(divs[selected.length + 1]);
} else {
$(this).attr('checked', false);
}
});
while (selected.length < 4) {
selected.push(divs[0]);
}
for (var i in selected) {
$('.container').append(selected[i]);
}
$(".css-checkbox").click(function(){
if ($('.css-checkbox:checked').length > 4) {
$(this).attr('checked', false);
} else {
var cval = $(this).val();
var checked = $(this).is(':checked');
if (checked) {
var empty = $.inArray(divs[0], selected);
selected[empty] = divs[cval];
$('#empty').replaceWith(divs[cval]);
} else {
var filled = $.inArray(divs[cval], selected);
selected[filled] = divs[0];
$('.container').find(divs[cval]).replaceWith(divs[0]);
}
}
});
首先,我用 div 创建了一个数组,这样您就可以放置和替换它们。空的 div 必须手动输入,因为您不止一次需要这个。在数组中,您将获得对该元素的引用。接下来我从你的 html.
中删除每个 div接下来我获取选定的框并将 div 按值放入选定的数组中。之后,我将前 4 个选定的 div 附加到容器中。
点击功能检查是否点击了 4 个框,当您点击第 5 个时,它会立即取消选中。接下来是检查以查看您是否选中或取消选中该复选框。当您检查它时,将第一个空的 div 替换为选定的 div。如果取消选中,它将用空 div.
替换选定的 div