尝试将jQuery元素数组附加到DOM中
这是我的密码:尝试将jQuery元素数组附加到DOM中,jquery,Jquery,这是我的密码: function rearrangeBySort(allTasksPerSection) { if (allTasksPerSection.attr("class").match("task-incomplete")) { debugger; $(".task.task-incomplete").replaceWith(allTasksPerSection) } else { $(".task.hide.tasks-hidden").replace
function rearrangeBySort(allTasksPerSection) {
if (allTasksPerSection.attr("class").match("task-incomplete")) {
debugger;
$(".task.task-incomplete").replaceWith(allTasksPerSection)
} else {
$(".task.hide.tasks-hidden").replaceWith(allTasksPerSection)
}
};
allTasksPerSection是一个jquery代理数组:
[<div class="task task-incomplete">…</div>, <div class="task task-incomplete">…</div>, <div class="task task-incomplete">…</div>, <div class="task task-incomplete">…</div>, <div class="task task-incomplete">…</div>, <div class="task task-incomplete">…</div>]
[…, …, …, …, …, …]
我想在这里使用replaceWith用我的div数组allTasksPerSection来替换黑色的HTML。我该怎么办?显然,replaceWith不能将jquery元素附加到DOM中?如果allTasksPerSection是一个div数组,我该怎么办?可以用jquery选择来包装元素:
var tasks = $(allTasksPerSection);
这将导致jQuery将其视为选择集,您现在可以对其执行选择器:
tasks.find(".task-incomplete"); // all incompete tasks
tasks.find(".task-incomplete").length === tasks.length; // all tasks have the class
您可以尝试以下方法:
function rearrangeBySort(allTasksPerSection) {
$(".task.task-incomplete").empty();
allTasksPerSection.each(function(){
if ($(this).hasClass("task-incomplete")) {
debugger;
$(".task.task-incomplete").append($(this));
} else {
$(".task.hide.tasks-hidden").append($(this));
}
});
};
请检查hasClass()
allTasksPerSection.hasClass(“任务未完成”)
问题是因为您试图对数组而不是jQuery对象调用attr()
。您试图创建什么行为?您是否尝试过使用.append()
?调试器是否命中?@rorymcrossan我认为它是jQuery对象。[]
是一个数组,{}
是一个对象。而且,你没有对数组中的每个元素进行转义。这也是一个问题。他想要的逻辑取决于我所理解的所有任务是否都不完整。@BenjaminGruenbaum我认为这里的解决方案是迭代数组,然后在满足任何条件的情况下将其附加到div,这就是OP所要求的。