Javascript jQuery无法将事件处理程序附加到<;表格>;创建人。加载

Javascript jQuery无法将事件处理程序附加到<;表格>;创建人。加载,javascript,jquery,ajax,Javascript,Jquery,Ajax,第一次提问。。。 我页面上的这个链接 <a onclick="$('#mainbody').load('pages/login.php', tester());">Login</a> …提交表单时不会发生任何事情。 但是,如果我将链接更改为 <a onclick="$('#mainbody').load('pages/login.php', function(){$( '#form' ).submit(function() { alert('Handler cal

第一次提问。。。 我页面上的这个链接

<a onclick="$('#mainbody').load('pages/login.php', tester());">Login</a>
…提交表单时不会发生任何事情。 但是,如果我将链接更改为

<a onclick="$('#mainbody').load('pages/login.php', function(){$( '#form' ).submit(function() { alert('Handler called.'); return false;});});">Login</a>
登录
…这很好用。 从功能上讲,我看不出调用命名函数与在回调中定义函数之间有什么区别,但显然浏览器可以! 我做错了什么?是语法吗?时机?
或者——我仍然在使用jQuery——是因为即使我在调用一个在表单存在后引用表单的eventhandler,函数首先创建的事实会忽略它吗?

您将调用
tester
函数的结果绑定为
.load
的回调(这算不了什么)。改为这样做:

$("#mainbody").load('pages/login.php', tester);

也就是说,使用函数名作为回调。

您正在将调用的结果绑定到
tester
函数,作为对
.load
的回调(这不算什么)。改为这样做:

$("#mainbody").load('pages/login.php', tester);
也就是说,使用函数名作为回调

是不是因为即使我调用了一个eventhandler,它在表单存在后引用了表单

对。您应该研究jQuery委托方法

如果你说

$("body").delegate("form","submit",function(){
    alert("handeled");
});
它将在从其他源加载后工作

是不是因为即使我调用了一个eventhandler,它在表单存在后引用了表单

对。您应该研究jQuery委托方法

如果你说

$("body").delegate("form","submit",function(){
    alert("handeled");
});

从其他源加载表单元素后,它将工作。

因为表单元素不在初始DOM中,您需要

  • 在回调时重新附加它,在加载回调时调用函数

  • 或者让它对这些变化做出反应

    $(“#表单”).die('submit').live('submit',function(){ 警报('调用处理程序'); 返回false; });


请注意,我删除了函数

,因为表单元素不在需要修改的初始DOM中

  • 在回调时重新附加它,在加载回调时调用函数

  • 或者让它对这些变化做出反应

    $(“#表单”).die('submit').live('submit',function(){ 警报('调用处理程序'); 返回false; });


请注意,我删除了该功能

我正在经历这样的一天!我有一个这样的日子!显然,没有足够的代表!显然,没有足够的代表!