Javascript js/jquery函数调用顺序未反映在结果中

Javascript js/jquery函数调用顺序未反映在结果中,javascript,jquery,Javascript,Jquery,编辑: 好的,为了帮助解决这个问题,我在网上举了一个例子: 该示例按预期工作,但没有我想要的内容。请注意,这显然只发生在FF13上,而不是IE9上 重新创建问题的步骤: -Ctrl+F5可重新加载页面(覆盖缓存)。 -使用Firebug(FF的插件),将1.jpg更改为head.gif -单击右侧的“库存”菜单选项卡 请注意,如果使用1.jpg,菜单和底部之间会出现间隙。所以问题是,我如何才能让gif图像与页面正常工作?jQuery是异步的 不要在loadContent之后调用loadSide

编辑:

好的,为了帮助解决这个问题,我在网上举了一个例子:

该示例按预期工作,但没有我想要的内容。请注意,这显然只发生在FF13上,而不是IE9上

重新创建问题的步骤:
-Ctrl+F5可重新加载页面(覆盖缓存)。
-使用Firebug(FF的插件),将1.jpg更改为head.gif
-单击右侧的“库存”菜单选项卡

请注意,如果使用1.jpg,菜单和底部之间会出现间隙。所以问题是,我如何才能让gif图像与页面正常工作?

jQuery是异步的

不要在loadContent之后调用loadSidebar,而是将其作为回调传递给:

这将在内容加载完成时调用loadSidebar,而不是在开始加载后立即调用

退房。它可能会帮助您理解为什么需要回调

编辑

正如Eric指出的,在评论中,您还将url存储在id中。您应该将其存储在锚定的
href
属性中。然后,您可以从单击处理程序返回false,以避免加载整个页面:

$(document).ready(function() {
    $(".tabs a").click(function() {
        loadContent('#ContentDiv', this, '.tabs a', 'href', loadSidebar);
        return false;
    });
});

我真的不理解这个问题,所以我猜你的问题是:
loadSidebar
是否在
loadContent
之前执行?为什么要在元素的
id
中存储url?(
$(elm).attr(attr)
扩展为
$(this.attr('id')
)@Eric我意识到了这一点。我使用id是因为如果我在上使用href,当单击元素时,它会立即加载页面。使用允许我在没有额外代码的情况下拥有所需的功能。如果你有更好的方法,那就发吧!虽然将数据放在
id
中总是一个坏主意,但创建新属性并没有什么错,比如
data-####
,比如
数据ajaxloads
。不过,在这种情况下,让它与
href
一起工作会更好。好吧,我仍然有同样的问题,但其他一些问题已经解决/改进-谢谢。代码适用于某些页面,但不适用于其他页面。
$(document).ready(function() {
    $(".tabs a").click(function() {
        loadContent('#ContentDiv', this, '.tabs a', 'href', loadSidebar);
        return false;
    });
});