使用 jQuery .each() 复制容器
Copying container with jQuery .each()
我有三个 div 具有相同的 class,每个 div 都有自己的 ID。我想根据它们的匹配属性将其他三个 div 复制到其中。
$(document).ready(function() {
$(".prod-cat-addt-details-thumbs-div").each(function(index, obj) {
var matchingId = $(this).attr("id").replace(/[^0-9]/g, '');
var matchingContainer = ("prod-cat-thumb-item-") + matchingId;
if (matchingId == $(".prod-cat-item").attr("data-itemid")) {
$(this).clone().prop("id", $(this).attr("id") + '-' + matchingId).prop("class", "thumb-gallery").appendTo($('.prod-cat-item[id="' + matchingContainer + '"]'));
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="prod-cat-thumb-item-5" class="prod-cat-item" data-itemid="5">
<p>Div Content</p>
</div>
<div id="prod-cat-thumb-item-6" class="prod-cat-item" data-itemid="6">
<p>Div Content</p>
</div>
<div id="prod-cat-thumb-item-4" class="prod-cat-item" data-itemid="4">
<p>Div Content</p>
</div>
<div id="prod-cat-addt-details-thumbs-div-4" class="prod-cat-addt-details-thumbs-div">
<div class="content">Other Content</div>
</div>
<div id="prod-cat-addt-details-thumbs-div-5" class="prod-cat-addt-details-thumbs-div">
<div class="content">Other Content</div>
</div>
<div id="prod-cat-addt-details-thumbs-div-6" class="prod-cat-addt-details-thumbs-div">
<div class="content">Other Content</div>
</div>
我被卡住了,非常感谢您的帮助,谢谢!
您可以迭代 prod-cat-item
并将目标元素附加到它。
$(".prod-cat-item").each(function(index, obj) {
//Get item Id
var matchingId = $(this).data("itemid");
//Create selector to target element
var matchingContainer = "#prod-cat-addt-details-thumbs-div-" + matchingId;
$(matchingContainer).addClass("thumb-gallery").appendTo($(this));
});
$(document).ready(function() {
$(".prod-cat-item").each(function(index, obj) {
var matchingId = $(this).data("itemid");
var matchingContainer = "#prod-cat-addt-details-thumbs-div-" + matchingId;
$(matchingContainer).addClass("thumb-gallery").appendTo($(this));
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="prod-cat-thumb-item-5" class="prod-cat-item" data-itemid="5">
<p>Div Content</p>
</div>
<div id="prod-cat-thumb-item-6" class="prod-cat-item" data-itemid="6">
<p>Div Content</p>
</div>
<div id="prod-cat-thumb-item-4" class="prod-cat-item" data-itemid="4">
<p>Div Content</p>
</div>
<div id="prod-cat-addt-details-thumbs-div-4" class="prod-cat-addt-details-thumbs-div">
<div class="content">Other Content</div>
</div>
<div id="prod-cat-addt-details-thumbs-div-5" class="prod-cat-addt-details-thumbs-div">
<div class="content">Other Content</div>
</div>
<div id="prod-cat-addt-details-thumbs-div-6" class="prod-cat-addt-details-thumbs-div">
<div class="content">Other Content</div>
</div>
这一行 if(matchingId == $(".prod-cat-item").attr("data-itemid"))
是问题所在,因为 $(".prod-cat-item").attr("data-itemid")
总是返回第一个元素的 data-itemid
。您可以使用 $(".prod-cat-item[data-itemid="+matchingId+"]")
select 具有相同 data-itemid
的元素,因此解决方案是这样的,请查看:
$(".prod-cat-addt-details-thumbs-div").each(function(index, obj){
var matchingId = $(this).attr("id").replace(/[^0-9]/g,'');
var target = $(".prod-cat-item[data-itemid="+matchingId+"]");
$(this).clone().prop("id", $(this).attr("id") + '-' + matchingId).prop("class", "thumb-gallery").appendTo(target);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="prod-cat-thumb-item-5" class="prod-cat-item" data-itemid="5">
<p>Div Content</p>
</div>
<div id="prod-cat-thumb-item-6" class="prod-cat-item" data-itemid="6">
<p>Div Content</p>
</div>
<div id="prod-cat-thumb-item-4" class="prod-cat-item" data-itemid="4">
<p>Div Content</p>
</div>
<div id="prod-cat-addt-details-thumbs-div-4" class="prod-cat-addt-details-thumbs-div">
<div class="content">Other Content</div>
</div>
<div id="prod-cat-addt-details-thumbs-div-5" class="prod-cat-addt-details-thumbs-div">
<div class="content">Other Content</div>
</div>
<div id="prod-cat-addt-details-thumbs-div-6" class="prod-cat-addt-details-thumbs-div">
<div class="content">Other Content</div>
</div>
保持简单。
$(document).ready(function(){
$(".prod-cat-addt-details-thumbs-div").each(function(){
var c = $(this).attr("id")[$(this).attr("id").length -1];
$('#prod-cat-thumb-item-'+c).append($(this).text());
});
});
我有三个 div 具有相同的 class,每个 div 都有自己的 ID。我想根据它们的匹配属性将其他三个 div 复制到其中。
$(document).ready(function() {
$(".prod-cat-addt-details-thumbs-div").each(function(index, obj) {
var matchingId = $(this).attr("id").replace(/[^0-9]/g, '');
var matchingContainer = ("prod-cat-thumb-item-") + matchingId;
if (matchingId == $(".prod-cat-item").attr("data-itemid")) {
$(this).clone().prop("id", $(this).attr("id") + '-' + matchingId).prop("class", "thumb-gallery").appendTo($('.prod-cat-item[id="' + matchingContainer + '"]'));
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="prod-cat-thumb-item-5" class="prod-cat-item" data-itemid="5">
<p>Div Content</p>
</div>
<div id="prod-cat-thumb-item-6" class="prod-cat-item" data-itemid="6">
<p>Div Content</p>
</div>
<div id="prod-cat-thumb-item-4" class="prod-cat-item" data-itemid="4">
<p>Div Content</p>
</div>
<div id="prod-cat-addt-details-thumbs-div-4" class="prod-cat-addt-details-thumbs-div">
<div class="content">Other Content</div>
</div>
<div id="prod-cat-addt-details-thumbs-div-5" class="prod-cat-addt-details-thumbs-div">
<div class="content">Other Content</div>
</div>
<div id="prod-cat-addt-details-thumbs-div-6" class="prod-cat-addt-details-thumbs-div">
<div class="content">Other Content</div>
</div>
我被卡住了,非常感谢您的帮助,谢谢!
您可以迭代 prod-cat-item
并将目标元素附加到它。
$(".prod-cat-item").each(function(index, obj) {
//Get item Id
var matchingId = $(this).data("itemid");
//Create selector to target element
var matchingContainer = "#prod-cat-addt-details-thumbs-div-" + matchingId;
$(matchingContainer).addClass("thumb-gallery").appendTo($(this));
});
$(document).ready(function() {
$(".prod-cat-item").each(function(index, obj) {
var matchingId = $(this).data("itemid");
var matchingContainer = "#prod-cat-addt-details-thumbs-div-" + matchingId;
$(matchingContainer).addClass("thumb-gallery").appendTo($(this));
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="prod-cat-thumb-item-5" class="prod-cat-item" data-itemid="5">
<p>Div Content</p>
</div>
<div id="prod-cat-thumb-item-6" class="prod-cat-item" data-itemid="6">
<p>Div Content</p>
</div>
<div id="prod-cat-thumb-item-4" class="prod-cat-item" data-itemid="4">
<p>Div Content</p>
</div>
<div id="prod-cat-addt-details-thumbs-div-4" class="prod-cat-addt-details-thumbs-div">
<div class="content">Other Content</div>
</div>
<div id="prod-cat-addt-details-thumbs-div-5" class="prod-cat-addt-details-thumbs-div">
<div class="content">Other Content</div>
</div>
<div id="prod-cat-addt-details-thumbs-div-6" class="prod-cat-addt-details-thumbs-div">
<div class="content">Other Content</div>
</div>
这一行 if(matchingId == $(".prod-cat-item").attr("data-itemid"))
是问题所在,因为 $(".prod-cat-item").attr("data-itemid")
总是返回第一个元素的 data-itemid
。您可以使用 $(".prod-cat-item[data-itemid="+matchingId+"]")
select 具有相同 data-itemid
的元素,因此解决方案是这样的,请查看:
$(".prod-cat-addt-details-thumbs-div").each(function(index, obj){
var matchingId = $(this).attr("id").replace(/[^0-9]/g,'');
var target = $(".prod-cat-item[data-itemid="+matchingId+"]");
$(this).clone().prop("id", $(this).attr("id") + '-' + matchingId).prop("class", "thumb-gallery").appendTo(target);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="prod-cat-thumb-item-5" class="prod-cat-item" data-itemid="5">
<p>Div Content</p>
</div>
<div id="prod-cat-thumb-item-6" class="prod-cat-item" data-itemid="6">
<p>Div Content</p>
</div>
<div id="prod-cat-thumb-item-4" class="prod-cat-item" data-itemid="4">
<p>Div Content</p>
</div>
<div id="prod-cat-addt-details-thumbs-div-4" class="prod-cat-addt-details-thumbs-div">
<div class="content">Other Content</div>
</div>
<div id="prod-cat-addt-details-thumbs-div-5" class="prod-cat-addt-details-thumbs-div">
<div class="content">Other Content</div>
</div>
<div id="prod-cat-addt-details-thumbs-div-6" class="prod-cat-addt-details-thumbs-div">
<div class="content">Other Content</div>
</div>
保持简单。
$(document).ready(function(){
$(".prod-cat-addt-details-thumbs-div").each(function(){
var c = $(this).attr("id")[$(this).attr("id").length -1];
$('#prod-cat-thumb-item-'+c).append($(this).text());
});
});