javascript-如何调用从ajax新添加的函数

javascript-如何调用从ajax新添加的函数,javascript,jquery,dom,dynamic,Javascript,Jquery,Dom,Dynamic,我有一个编码困难,以前在这个论坛上有人问过我: 但我觉得答案并不令人满意。更准确地说,我正在处理的问题,以下是细节: 我使用jquery动态加载文档(HTML和javascript) var url = 'document.php'; $('#container').load(url); document.php的外观示例: <form> <input name="firstname"></input> </form> <scri

我有一个编码困难,以前在这个论坛上有人问过我:

但我觉得答案并不令人满意。更准确地说,我正在处理的问题,以下是细节:

我使用jquery动态加载文档(HTML和javascript)

var url = 'document.php';
$('#container').load(url);
document.php的外观示例:

<form>
    <input name="firstname"></input>
</form>
<script>
    function dosomething()
    {
        console.log($('input[name=firstname]').val());
    }
</script>

函数dosomething()
{
log($('input[name=firstname]')).val();
}
*dosomething()函数是我稍后要调用的函数

然后我想调用document.php中的函数。由于我的需求,我不想在加载文档后调用该函数,而是在以后需要时调用它。因为它是动态加载的,所以DOM无法识别这些函数。如何正确调用此函数

多谢各位

DOM无法识别这些函数

这听起来像是您的其他函数包装在远程页面的
$(document).ready()
中。如果是这种情况,则它们超出了您从主页中的代码调用它们的范围,您需要将它们移出
ready
处理程序,以使它们可以全局访问

编辑:其他可能性


head中的Script标记-在html之后移动到body,或者在ajax回调中使用$.getScript来检索

我认为您正在尝试实现名为
按需javascript
(或
延迟加载
)的技术。换句话说,您的页面最初应该只加载一个小脚本,但使用一组对象和函数,这些对象和函数在其他一些文件中可用,但在需要时将被加载

如果是这样,我必须警告您:您可能需要更新现有代码。与其直接调用某个函数,不如先检查它是否存在,如果不可用,请等待加载:

if (typeof lazyObjects.someLazyFunction !== 'function') {
  lazyLoad('lazyFunction.js');
}
lazyObjects.someLazyFunction();
这里的关键点是lazyLoad应该是同步的。换句话说,您必须等待包含函数的脚本实际加载。否则,调用someLazyFunction时,即使使用这种检查,也不会定义它

lazyFunction.js
将包含一些代码,这些代码将改变
lazyObjects
,并将所需的方法作为属性添加到它们中:

// in lazyFunction.js
lazyObjects.someLazyFunction = function() { ... }
虽然在技术上可以在这些情况下使用全局(
=window
)对象,但我通常不会这样做,也不建议这样做


看,事情没那么简单。)我建议您阅读以了解更多有关此技术的信息,并在代码中实际使用一些已建立的组件来实现它(链接文章中提到了其中的一些组件)。

您的意思是,有些脚本元素中包含要调用的函数?该名称为回调函数,您可以在jquery.com documentation中找到更多信息。在document.php中有html和脚本。如果正在加载来自远程的所有html,则应该删除该函数accesible@charlietfl不幸的是,新添加的元素或函数不会自动添加到DOM(CMIIW),JavaScripter通常使用jquery的'delegate/on/live'方法或其他js framework:D处理新添加的元素,但是如何调用新添加的函数呢D这就是问题所在。我的函数被包装在一个普通的标记中(在document.php中),而不是$(document.ready(),如果这是您的意思:),那么
DOM不识别
就没有意义了。。。它们在脑袋里吗?如果是这样,请查看使用$.getScript,或将它们移动到HTMLD下面。加载方法是否在要在远程页面中查找的url之后包含css选择器<代码>加载('page.php#someId')
脚本被加载到一个div容器中(因此它们肯定不在head:D中),并且在url:Dno之后我没有包含css选择器。对不起,我只是尝试了一个简单的测试,效果很好。加载其他页面后从控制台调用该函数。加载后控制台中是否有ERORR?