好吧你们所有的jquery专业人士。这个问题让我觉得很毛茸茸。我将尽我所能提供尽可能多的信息,以便明确。
我有div的层次结构。它们被设置为有三层。每个图层上都有一个刷新按钮。当我单击顶层的刷新按钮时,所有三个图层的刷新按钮开始旋转。这是预期的。
目标是当底层的刷新图像停止旋转(意味着返回ajax调用并更新该层)时,我希望父图层中的图像也停止旋转。
以下是代码中发生的事情:
function refresh(layer){
switch(layer){
case 'bottom layer':
Make ajax call for self and then update page
Remove class rotate (which makes the image rotate)
case 'middle layer':
For each middle layer, call refresh with the middle layer's 'bottom layer' children
case 'top layer':
for each top layer, call refresh with 'middle layer' children
}
}
修改 我不能告诉父母删除类旋转自己,因为它在孩子的ajax调用完成之前被删除。在孩子完成ajax调用之前,我不希望删除父母的课程。
另外,当我说有三层时,我并不完全诚实,因为当单击图像并且图像位于div中并且div位于中间层的div中时,实际上正在调用该函数我可以弄清楚如何导航DOM以获取父母,我只想要一些伪代码和解释如何不从父母删除类旋转,直到所有孩子都完成更新。 完成编辑
我当然希望这是有道理的。我不能把实际的代码,因为它是专有的而且相当冗长;我们不喜欢代码墙。
当所有底层都完成更新后,如何告诉底层从其父级中删除“旋转”类?
答案 0 :(得分:0)
也许我不明白你的问题,但有了这个:
var divMiddleLayer = ("divBottomLayer").parent();
var divTopLayer = ("divMiddleLayer").parent();
divMiddleLayer.removeClass("rotate");
divTopLayer.removeClass("rotate");
答案 1 :(得分:0)
这可能有助于您继续前进。
您可以使用jQuery.when()仅在多个ajax请求完成时执行某些操作。
$.when($.ajax({
url: yoururl,
type: "POST"
}), $.ajax({
url: yoururl,
type: "POST"
}), $.ajax({
url: yoururl,
type: "POST"
}), $.ajax({
url: yoururl,
type: "POST"
})).done( function() {
//do your parent remove
});
答案 2 :(得分:0)
我最终写了一个函数,让我为我上课。该函数找到了子div的父级,并从那里访问了所有子级图像。通过这种方式,父级可以从自身及其所有子级中删除旋转类。