jQuery - 在.load()完成后运行一个函数并更新DOM

时间:2011-11-12 16:48:49

标签: javascript jquery html

我正在尝试在用户点击菜单时在加载到DOM中的对象上运行一个函数。以下是我的代码的一部分:

$('#menu li a').click(function(){  
            var toLoad = $(this).attr('href');
            //...

            var $newItem = $('<li></li>').appendTo($(columns).first());

            loadContent();
            function loadContent() {
                $newItem.load(toLoad, runScript());
            }

            function runScript() {
                //see the code in IE9's debugger
                alert($newItem.get(0).outerHTML);
                obj.doWidget($newItem.get(0));
            }

            return false;
        });

问题是,当我点击菜单项时,上面代码中的alert函数显示加载前的代码:<li></li>而不是来自对象本身的加载元素因此脚本更改旧对象,新对象将覆盖其内容。 (就像我从未运行过剧本一样)。我假设回退函数应该实现返回加载的对象。我怎样才能得到那个对象?谢谢。

1 个答案:

答案 0 :(得分:5)

引用传递给runScript而不是执行该函数的结果:

$newItem.load(toLoad, runScript);