在动态加载的PHP表单上放置JavaScript事件


Placing a JavaScript event on a dynamically loaded PHP form

解决方案:

多亏了Shmiddty,我明白了这一点:

$( static parent element ).on('submit', '#add_client', function(e) {
    e.preventDefault();
    firm.addUser( $(this), '/ci/firm/add_client', 'client' );
});

描述:

我为一位客户制作了一些表格。我希望这个表单是根据他点击的链接动态创建的。此表单将自动填充一些数据。

以下是将创建动态内容的jQuery

$('.create').on('click', function(e) {
    e.preventDefault();
    utility.create_modal(); // dynamic div with form
});

这是创建div并将PHP表单放置在html:中的函数

$(document.createElement('div')).attr({
    'class' : 'span3'
}).html( create_div( '/ci/firm/return_user_form/client', 'html' ) ),

这里是ajax函数:

var result = '';
$.ajax({
    url: path, 
    type: 'get', 
     dataType: type,
     async : false,
     success: function(data) {
         result = data;
     } 
    });
return result;

这是从PHP文件中提取的html:(这是一个巨大的表单,我只想包括有问题的按钮)

<input type="submit" name="submit" value="Add Client"  id="add_client">

问题:

这个动态html内容中有一个表单。我想在我包含的表单上放置一个JavaScript事件。这可能吗?如果是,我该怎么做?

这不起作用(#add_client是表单中按钮的id):

$('#add_client').on('click', function(e) {
    e.preventDefault();
});
$('some_parent_selector').on('click', '#add_client', function(e) {
    e.preventDefault();
});

on侦听器需要一个父对象(不是动态的)来侦听弹出的单击事件。然后,当事件冒泡到父级时,它会确定它是否源自'#add_client',如果是,它会调用您的匿名函数。