我有2个名单。
第一个列表包含所有数据。另一个是占位符。我有一个按钮来取默认值。将第一个列表克隆到占位符中。
现在我正在使用此代码alert
找到所有找到的data-id
。哪个工作正常。
但是当我尝试将这些数据属性粘贴到占位符上时,它总是粘贴每个占位符中的最后一个值。
$(".default").click(function() {
$("li.to-drag").each(function(index) {
$("li.placeholder").addClass("dropped");
var clone = $(this).clone();
var day = $(this).attr("data-id");
$("li.placeholder").each(function(){
$("li.placeholder").attr("data-id", index);
});
clone.hide().appendTo("." + index).fadeIn(1500);
});
var dropped = $(".dropped").length;
var original = $(".placeholder").length;
if (dropped === original) {
$("li.placeholder").removeClass(blank_placeholder);
$("#dropzone").append('<li class="placeholder blank" data-id="" data-order=""></li>');
init();
}
});
我该如何解决这个问题?
解:
我不得不在另一个迭代each()
类的第二个.to-drag
循环之外。
$("li.placeholder").each(function(){
var day = $(this).children().attr("data-id");
$(this).attr("data-id", day);
});
答案 0 :(得分:6)
在.each()
循环中,您必须使用$(this)
,否则每次循环重复时都会更改所有内容。
所以只需更改代码的以下部分:
$("li.placeholder").each(function(){
$(this).attr("data-id", index);
});