如何将“on”添加到另一个动态添加的元素内的元素上?

时间:2012-12-31 05:24:43

标签: jquery

我有一个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。

1 个答案:

答案 0 :(得分:3)

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

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

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

因此,在load回调中,您将submit挂钩在表单和事件处理程序中,您可以对#article执行任何操作,例如:< / p>

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

(当然,除非表单有target打开一个新窗口,或者您取消标准表单提交并以另一种方式发送数据,页面将被表单提交完全拆除并替换来自服务器的结果页面,因此您对#article所做的更改将不会持续很长时间。但我猜测您正在阻止它,或者您正在进行的更改仅限于页面被表单提交拆除。)


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