jQuery each()只选择最后一个值

jQuery each() only selects last value

本文关键字:选择 最后一个 each jQuery      更新时间:2023-09-26

我有两个列表。

第一个列表保存所有数据。另一个是占位符。我有一个按钮来获取默认值。它将第一个列表克隆到占位符中。

现在我用这个代码来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();
    }
});

我该如何解决这个问题?

解决方案

我不得不在迭代.to-drag类的另一个循环之外做第二个each()循环。

$("li.placeholder").each(function(){
    var day = $(this).children().attr("data-id");
    $(this).attr("data-id", day);
});

这是一个jsfiddle

.each()循环中,必须使用$(this),否则每次循环重复时都会更改所有内容。

所以只需更改代码的以下部分:

$("li.placeholder").each(function(){
    $(this).attr("data-id", index);
});