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

标签 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>而不是从对象本身加载的元素,因此脚本会更改旧对象,而新对象会覆盖其内容。 (就像我从未运行过脚本一样)。我假设回退函数应该实现返回加载的对象。我怎样才能得到那个对象?谢谢。

最佳答案

reference 传递给 runScript 而不是执行函数的结果:

$newItem.load(toLoad, runScript);

关于javascript - jQuery - 在 .load() 完成并且 DOM 更新后运行一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8105913/

相关文章:

html - 如何正确渲染离屏 Canvas

javascript - Nexus 7 (4.2.1) 上的 Highcharts 容器选择问题

javascript - 如何根据选择隐藏和显示 HTML 中的字段

javascript - 仅显示多个列表中的特定项目

javascript - 如何检查一个 JavaScript 对象中的值是否存在于另一个对象中?

javascript - 如何在每个 ajax 或完整请求后调用 javascript

javascript - 如何让我的 JavaScript 引用外部定义的 var 来进行验证?

jquery - 在 asp.net mvc4 应用程序中使用 Jquery 验证表单

javascript - 如何使用 eq() jquery 更改属性的每个值

javascript - 在我的测试中 $observe 函数从未被调用