如何将div的唯一元素追加到另一个div

时间:2016-01-07 08:29:42

标签: javascript jquery html

我有2个div喜欢 <div id="destination" runat="server"></div><div class="errorDiv"></div>

我写了一个jquery函数

 $(document).each(function () {
            if ($("#destination").find("div").html() !== $(".errorDiv").html()) {
                $("#destination").append($(".errorDiv"));
                $("#error").append($("#destination"));
            }
        }).change();

在此函数中,如果目标div包含errorDiv内容跳过,则追加到目标。然后目的地将附加到另一个div。但是,我的支票不起作用。我怎样才能追加div的唯一元素? errorDiv内容在ASP页面中生成,此内容是通用的。

当页面正在运行时,我会收到一些错误消息,并且我想将这些消息附加到目标div。例如;如果我抓住

 <div class="errorDiv">A</div>
 <div class="errorDiv">A</div>
 <div class="errorDiv">B</div>
 <div class="errorDiv">B</div>
 <div class="errorDiv">A</div>
 <div class="errorDiv">C</div>

内容我只想附加

 <div class="errorDiv">A</div>
 <div class="errorDiv">B</div>
 <div class="errorDiv">C</div>

div到目标div。

但是通过我的功能,所有div都会附加。

1 个答案:

答案 0 :(得分:4)

所以听起来你得到了新的.errorDiv,并且只有在等效文字已经存在的情况下才想将它们添加到#destination

为此,您需要遍历#destination中的div,而不是仅查看第一个的HTML。见评论:

$(document).each(function() {   // <== Calling .each on $(document) makes no sense
    // Get an array of the currently-known errors in destination
    var errors = $("#destination div").map(function() {
        return $(this).html();
    }).get();

    // Loop through the "new" errors
    $(".errorDiv").each(function() {
        // Is the text of this error already in the destination?
        if ($.inArray($(this).html(), errors) == -1) {
            // No, add it
            $("#destination").append(this);
            $("#error").append($("#destination")); // <== This seems very strange
        }
    }
}).change();                   // <== Triggering the change event on document seems odd