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

时间:2012-06-07 16:04:11

标签: javascript jquery

编辑:

好的,为了帮助解决这个问题,我在网上举了一些例子:
http://lodge323.com/test/index.html

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

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

注意如果使用1.jpg,菜单和底部之间是否存在间隙。所以问题是,我怎样才能让gif图像与页面一起正常工作?

1 个答案:

答案 0 :(得分:3)

jQuery的load是异步的。

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

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

function loadContent(divTarget, elm, selector, attr, callback) {
    $(divTarget).load($(elm).attr(attr) + ' #ContentLoad', callback);
}

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

结帐Understanding Callback Functions in Javascript。它可能有助于您理解为什么需要回调。

修改

正如Eric所指出的那样,你还在一个id中存储了一个url。您应该将其存储在锚点的href属性中。然后你可以从你的点击处理程序返回false,以避免整个页面被加载:

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