假设我们有一些这样的 div
<div class="row chapter" node="1">Chapter 1</div>
<div class="row section" node="1">Section 1</div>
Ajax 接受必须删除的节点数组。我对此没有什么疑问
1) 我正在使用以下函数
$.each(result['nodes'], function(column, node)){
$(".row."+column).slideUp("slow").remove();
}
我不知道如何通过 2 个类和节点属性删除。如何做到这一点?
2) AFAIK $.each 函数逐一删除。可以一次性全部删除吗? 3)如何处理验证问题?我的意思是,
最佳答案
由于一个对象只有键值对,为了处理两个类和一个属性,您必须更改 JSON 的结构。我建议将其更改为 [{"class1":"foo","class2":"bar","node":1}]。使用这种格式,这将用于收集节点:
$($.map(result['nodes'], function(o) {
return "."+o.class1+"."+o.class2+"[node="+o.node+"]";
}).join(","))
正如 Joseph 所说,您的原始代码将过早删除节点,因此您需要将 remove()
放在 slideUp()
的参数中:
$($.map(result['nodes'], function(o) {
return "."+o.class1+"."+o.class2+"[node="+o.node+"]";
}).join(",")).slideUp("slow", function() {
$(this).remove()
});
示例 jsFiddle:http://jsfiddle.net/tSu8z/
请注意,实际上没有“一个接一个”与“全部一次”的区别。通过上面的代码,jQuery 获取了一次向上滑动所有节点的顺序,但在内部它会遍历节点。同样,节点很可能看起来同时被删除,但 jQuery 实际上是在遍历它们。它看起来是同步的唯一要求是 slideUp
是异步的,确实如此。
关于javascript - 按 2 个类和节点属性删除 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10427570/