1

我有一个 DOM 元素 #article,我正在使用以下代码加载登录表单:

$('#loginLink')
.click(function () {
   var $link = $(this);
   var href = $link.attr('data-href');
   $('#article').load(href);
}
return false;
});

登录表单如下所示:

<article id="article">
<section class="form" id="loginForm">
<form action="/User/Account/Login" method="post" novalidate="novalidate">
.....

如何在表单提交中附加一些操作?目前我有这个代码:

$("loginForm").on("submit", function () {
   var $form = $(this);

我知道这不会起作用,因为稍后会添加 loginForm。我需要的是一种在单击 loginForm 提交时附加到 #article 的方法。

4

1 回答 1

3

load有一个回调,一旦加载内容就会触发,所以:

$('#article').load(href, function() {
    // Hook up the new elements here
});

我需要的是一种在单击 loginForm 提交时附加到 #article 的方法。

因此,在load回调中,您将挂钩submit表单,在事件处理程序中,您将做任何您想做的事情#article,例如:

$('#article').load(href, function() {
    $("#loginForm").on("submit", function() {
        // Code here to do further things with #article
    });
});

(当然,除非表单有一个target打开一个新窗口的表单,或者您取消标准表单提交并以另一种方式发送数据,否则该页面将被表单提交完全拆除并被服务器生成的页面替换,所以你所做的更改#article不会持续很长时间。但我猜你正在阻止这种情况,或者你所做的更改只是在页面被表单提交撕毁之前。)


旁注:这可能只是问题中的一个错字,但你有$("loginForm")而不是$("#loginForm").

于 2012-12-31T05:26:46.943 回答