我有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都会附加。
答案 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