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

时间:2015-06-24 13:26:47

标签: 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();
    }

});

我该如何解决这个问题?

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

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

Here is a jsfiddle

1 个答案:

答案 0 :(得分:6)

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

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

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