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

Jer*_*ans 0 javascript jquery

我有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();
    }

});
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?

解决方案:

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

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

这是一个jsfiddle

The*_*lco 6

在你的.each()循环中,你必须使用$(this),否则每次循环重复时你都会改变一切.

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

$("li.placeholder").each(function(){
    $(this).attr("data-id", index);
});
Run Code Online (Sandbox Code Playgroud)